001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.kuali.kfs.gl.businessobject; 018 019 import java.sql.Date; 020 import java.util.LinkedHashMap; 021 import java.util.Map; 022 023 import org.apache.commons.lang.StringUtils; 024 import org.kuali.kfs.coa.businessobject.Account; 025 import org.kuali.kfs.coa.businessobject.BalanceType; 026 import org.kuali.kfs.coa.businessobject.Chart; 027 import org.kuali.kfs.coa.businessobject.ObjectCode; 028 import org.kuali.kfs.coa.businessobject.ObjectType; 029 import org.kuali.kfs.coa.service.AccountService; 030 import org.kuali.kfs.gl.GeneralLedgerConstants; 031 import org.kuali.kfs.sys.KFSConstants; 032 import org.kuali.kfs.sys.KFSKeyConstants; 033 import org.kuali.kfs.sys.KFSPropertyConstants; 034 import org.kuali.kfs.sys.businessobject.UniversityDate; 035 import org.kuali.kfs.sys.context.SpringContext; 036 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 037 import org.kuali.rice.kns.util.KualiDecimal; 038 import org.kuali.rice.kns.util.MessageMap; 039 040 /** 041 * CollectorDetail Business Object. 042 */ 043 public class CollectorDetail extends PersistableBusinessObjectBase { 044 045 private String universityFiscalPeriodCode; 046 private Integer universityFiscalYear; 047 private Date createDate; 048 private Integer transactionLedgerEntrySequenceNumber; 049 private String chartOfAccountsCode; 050 private String accountNumber; 051 private String subAccountNumber; 052 private String financialObjectCode; 053 private String financialSubObjectCode; 054 private String financialBalanceTypeCode; 055 private String financialObjectTypeCode; 056 private String collectorDetailSequenceNumber; 057 private String financialDocumentTypeCode; 058 private String financialSystemOriginationCode; 059 private String documentNumber; 060 private KualiDecimal collectorDetailItemAmount; 061 private String collectorDetailNoteText; 062 private String glCreditCode; 063 064 private ObjectCode financialObject; 065 private Account account; 066 private Chart chartOfAccounts; 067 private ObjectType objectType; 068 private BalanceType balanceType; 069 070 private static CollectorDetailFieldUtil collectorDetailFieldUtil; 071 072 /** 073 * Default constructor. 074 */ 075 public CollectorDetail() { 076 setSubAccountNumber(KFSConstants.getDashSubAccountNumber()); 077 setFinancialSubObjectCode(KFSConstants.getDashFinancialSubObjectCode()); 078 } 079 080 /** 081 * Gets the universityFiscalPeriodCode attribute. 082 * 083 * @return Returns the universityFiscalPeriodCode 084 */ 085 public String getUniversityFiscalPeriodCode() { 086 return universityFiscalPeriodCode; 087 } 088 089 /** 090 * Sets the universityFiscalPeriodCode attribute. 091 * 092 * @param universityFiscalPeriodCode The universityFiscalPeriodCode to set. 093 */ 094 public void setUniversityFiscalPeriodCode(String universityFiscalPeriodCode) { 095 this.universityFiscalPeriodCode = universityFiscalPeriodCode; 096 } 097 098 099 /** 100 * Gets the universityFiscalYear attribute. 101 * 102 * @return Returns the universityFiscalYear 103 */ 104 public Integer getUniversityFiscalYear() { 105 return universityFiscalYear; 106 } 107 108 /** 109 * Sets the universityFiscalYear attribute. 110 * 111 * @param universityFiscalYear The universityFiscalYear to set. 112 */ 113 public void setUniversityFiscalYear(Integer universityFiscalYear) { 114 this.universityFiscalYear = universityFiscalYear; 115 } 116 117 118 /** 119 * Gets the createDate attribute. 120 * 121 * @return Returns the createDate 122 */ 123 public Date getCreateDate() { 124 return createDate; 125 } 126 127 /** 128 * Sets the createDate attribute. 129 * 130 * @param createDate The createDate to set. 131 */ 132 public void setCreateDate(Date createDate) { 133 this.createDate = createDate; 134 } 135 136 /** 137 * Gets the transactionLedgerEntrySequenceNumber attribute. 138 * @return Returns the transactionLedgerEntrySequenceNumber. 139 */ 140 public Integer getTransactionLedgerEntrySequenceNumber() { 141 return transactionLedgerEntrySequenceNumber; 142 } 143 144 /** 145 * Sets the transactionLedgerEntrySequenceNumber attribute value. 146 * @param transactionLedgerEntrySequenceNumber The transactionLedgerEntrySequenceNumber to set. 147 */ 148 public void setTransactionLedgerEntrySequenceNumber(Integer transactionLedgerEntrySequenceNumber) { 149 this.transactionLedgerEntrySequenceNumber = transactionLedgerEntrySequenceNumber; 150 } 151 152 /** 153 * Gets the chartOfAccountsCode attribute. 154 * 155 * @return Returns the chartOfAccountsCode 156 */ 157 public String getChartOfAccountsCode() { 158 return chartOfAccountsCode; 159 } 160 161 /** 162 * Sets the chartOfAccountsCode attribute. 163 * 164 * @param chartOfAccountsCode The chartOfAccountsCode to set. 165 */ 166 public void setChartOfAccountsCode(String chartOfAccountsCode) { 167 this.chartOfAccountsCode = chartOfAccountsCode; 168 } 169 170 171 /** 172 * Gets the accountNumber attribute. 173 * 174 * @return Returns the accountNumber 175 */ 176 public String getAccountNumber() { 177 return accountNumber; 178 } 179 180 /** 181 * Sets the accountNumber attribute. 182 * 183 * @param accountNumber The accountNumber to set. 184 */ 185 public void setAccountNumber(String accountNumber) { 186 this.accountNumber = accountNumber; 187 } 188 189 190 /** 191 * Gets the subAccountNumber attribute. 192 * 193 * @return Returns the subAccountNumber 194 */ 195 public String getSubAccountNumber() { 196 return subAccountNumber; 197 } 198 199 /** 200 * Sets the subAccountNumber attribute. 201 * 202 * @param subAccountNumber The subAccountNumber to set. 203 */ 204 public void setSubAccountNumber(String subAccountNumber) { 205 this.subAccountNumber = subAccountNumber; 206 } 207 208 209 /** 210 * Gets the financialObjectCode attribute. 211 * 212 * @return Returns the financialObjectCode 213 */ 214 public String getFinancialObjectCode() { 215 return financialObjectCode; 216 } 217 218 /** 219 * Sets the financialObjectCode attribute. 220 * 221 * @param financialObjectCode The financialObjectCode to set. 222 */ 223 public void setFinancialObjectCode(String financialObjectCode) { 224 this.financialObjectCode = financialObjectCode; 225 } 226 227 228 /** 229 * Gets the financialSubObjectCode attribute. 230 * 231 * @return Returns the financialSubObjectCode 232 */ 233 public String getFinancialSubObjectCode() { 234 return financialSubObjectCode; 235 } 236 237 /** 238 * Sets the financialSubObjectCode attribute. 239 * 240 * @param financialSubObjectCode The financialSubObjectCode to set. 241 */ 242 public void setFinancialSubObjectCode(String financialSubObjectCode) { 243 this.financialSubObjectCode = financialSubObjectCode; 244 } 245 246 247 /** 248 * Gets the collectorDetailSequenceNumber attribute. 249 * 250 * @return Returns the collectorDetailSequenceNumber 251 */ 252 public String getCollectorDetailSequenceNumber() { 253 return collectorDetailSequenceNumber; 254 } 255 256 /** 257 * Sets the collectorDetailSequenceNumber attribute. 258 * 259 * @param collectorDetailSequenceNumber The collectorDetailSequenceNumber to set. 260 */ 261 public void setCollectorDetailSequenceNumber(String collectorDetailSequenceNumber) { 262 this.collectorDetailSequenceNumber = collectorDetailSequenceNumber; 263 } 264 265 266 /** 267 * Gets the financialDocumentTypeCode attribute. 268 * 269 * @return Returns the financialDocumentTypeCode 270 */ 271 public String getFinancialDocumentTypeCode() { 272 return financialDocumentTypeCode; 273 } 274 275 /** 276 * Sets the financialDocumentTypeCode attribute. 277 * 278 * @param financialDocumentTypeCode The financialDocumentTypeCode to set. 279 */ 280 public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) { 281 this.financialDocumentTypeCode = financialDocumentTypeCode; 282 } 283 284 285 /** 286 * Gets the financialSystemOriginationCode attribute. 287 * 288 * @return Returns the financialSystemOriginationCode 289 */ 290 public String getFinancialSystemOriginationCode() { 291 return financialSystemOriginationCode; 292 } 293 294 /** 295 * Sets the financialSystemOriginationCode attribute. 296 * 297 * @param financialSystemOriginationCode The financialSystemOriginationCode to set. 298 */ 299 public void setFinancialSystemOriginationCode(String financialSystemOriginationCode) { 300 this.financialSystemOriginationCode = financialSystemOriginationCode; 301 } 302 303 304 /** 305 * Gets the documentNumber attribute. 306 * 307 * @return Returns the documentNumber 308 */ 309 public String getDocumentNumber() { 310 return documentNumber; 311 } 312 313 /** 314 * Sets the documentNumber attribute. 315 * 316 * @param documentNumber The documentNumber to set. 317 */ 318 public void setDocumentNumber(String documentNumber) { 319 this.documentNumber = documentNumber; 320 } 321 322 323 /** 324 * Gets the collectorDetailItemAmount attribute. 325 * 326 * @return Returns the collectorDetailItemAmount 327 */ 328 public KualiDecimal getCollectorDetailItemAmount() { 329 return collectorDetailItemAmount; 330 } 331 332 /** 333 * Sets the collectorDetailItemAmount attribute. 334 * 335 * @param collectorDetailItemAmount The collectorDetailItemAmount to set. 336 */ 337 public void setCollectorDetailItemAmount(KualiDecimal collectorDetailItemAmount) { 338 this.collectorDetailItemAmount = collectorDetailItemAmount; 339 } 340 341 public void setCollectorDetailItemAmount(String collectorDetailItemAmount) { 342 this.collectorDetailItemAmount = new KualiDecimal(collectorDetailItemAmount); 343 } 344 345 public void clearcollectorDetailItemAmount() { 346 this.collectorDetailItemAmount = null; 347 } 348 349 /** 350 * Gets the collectorDetailNoteText attribute. 351 * 352 * @return Returns the collectorDetailNoteText 353 */ 354 public String getCollectorDetailNoteText() { 355 return collectorDetailNoteText; 356 } 357 358 /** 359 * Sets the collectorDetailNoteText attribute. 360 * 361 * @param collectorDetailNoteText The collectorDetailNoteText to set. 362 */ 363 public void setCollectorDetailNoteText(String collectorDetailNoteText) { 364 this.collectorDetailNoteText = collectorDetailNoteText; 365 } 366 367 368 /** 369 * Gets the financialObject attribute. 370 * 371 * @return Returns the financialObject 372 */ 373 public ObjectCode getFinancialObject() { 374 return financialObject; 375 } 376 377 /** 378 * Sets the financialObject attribute. 379 * 380 * @param financialObject The financialObject to set. 381 * @deprecated 382 */ 383 public void setFinancialObject(ObjectCode financialObject) { 384 this.financialObject = financialObject; 385 } 386 387 /** 388 * Gets the account attribute. 389 * 390 * @return Returns the account 391 */ 392 public Account getAccount() { 393 return account; 394 } 395 396 /** 397 * Sets the account attribute. 398 * 399 * @param account The account to set. 400 * @deprecated 401 */ 402 public void setAccount(Account account) { 403 this.account = account; 404 } 405 406 /** 407 * Gets the chartOfAccounts attribute. 408 * 409 * @return Returns the chartOfAccounts 410 */ 411 public Chart getChartOfAccounts() { 412 return chartOfAccounts; 413 } 414 415 /** 416 * Sets the chartOfAccounts attribute. 417 * 418 * @param chartOfAccounts The chartOfAccounts to set. 419 * @deprecated 420 */ 421 public void setChartOfAccounts(Chart chartOfAccounts) { 422 this.chartOfAccounts = chartOfAccounts; 423 } 424 425 /** 426 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 427 */ 428 protected LinkedHashMap toStringMapper() { 429 LinkedHashMap m = new LinkedHashMap(); 430 m.put("universityFiscalPeriodCode", getUniversityFiscalPeriodCode()); 431 if (getUniversityFiscalYear() != null) { 432 m.put("universityFiscalYear", getUniversityFiscalYear().toString()); 433 } 434 if (getCreateDate() != null) { 435 m.put("createDate", getCreateDate().toString()); 436 } 437 m.put("transactionLedgerEntrySequenceNumber", getTransactionLedgerEntrySequenceNumber()); 438 m.put("chartOfAccountsCode", getChartOfAccountsCode()); 439 m.put("accountNumber", getAccountNumber()); 440 m.put("subAccountNumber", getSubAccountNumber()); 441 m.put("financialObjectCode", getFinancialObjectCode()); 442 m.put("financialSubObjectCode", getFinancialSubObjectCode()); 443 m.put("collectorDetailSequenceNumber", getCollectorDetailSequenceNumber()); 444 m.put("financialDocumentTypeCode", getFinancialDocumentTypeCode()); 445 m.put(KFSPropertyConstants.DOCUMENT_NUMBER, getDocumentNumber()); 446 return m; 447 } 448 449 /** 450 * Gets the balanceTyp attribute. 451 * 452 * @return Returns the balanceTyp. 453 */ 454 public BalanceType getBalanceType() { 455 return balanceType; 456 } 457 458 /** 459 * Sets the balanceTyp attribute value. 460 * 461 * @param balanceTyp The balanceTyp to set. 462 */ 463 public void setBalanceType(BalanceType balanceTyp) { 464 this.balanceType = balanceTyp; 465 } 466 467 /** 468 * Gets the financialBalanceTypeCode attribute. 469 * 470 * @return Returns the financialBalanceTypeCode. 471 */ 472 public String getFinancialBalanceTypeCode() { 473 return financialBalanceTypeCode; 474 } 475 476 /** 477 * Sets the financialBalanceTypeCode attribute value. 478 * 479 * @param financialBalanceTypeCode The financialBalanceTypeCode to set. 480 */ 481 public void setFinancialBalanceTypeCode(String financialBalanceTypeCode) { 482 this.financialBalanceTypeCode = financialBalanceTypeCode; 483 } 484 485 /** 486 * Gets the financialObjectTypeCode attribute. 487 * 488 * @return Returns the financialObjectTypeCode. 489 */ 490 public String getFinancialObjectTypeCode() { 491 return financialObjectTypeCode; 492 } 493 494 /** 495 * Sets the financialObjectTypeCode attribute value. 496 * 497 * @param financialObjectTypeCode The financialObjectTypeCode to set. 498 */ 499 public void setFinancialObjectTypeCode(String financialObjectTypeCode) { 500 this.financialObjectTypeCode = financialObjectTypeCode; 501 } 502 503 /** 504 * Gets the glCreditCode attribute. 505 * 506 * @return Returns the glCreditCode. 507 */ 508 public String getGlCreditCode() { 509 return glCreditCode; 510 } 511 512 /** 513 * Sets the glCreditCode attribute value. 514 * 515 * @param glCreditCode The glCreditCode to set. 516 */ 517 public void setGLCreditCode(String glCreditCode) { 518 this.glCreditCode = glCreditCode; 519 } 520 521 522 /** 523 * Gets the objectType attribute. 524 * 525 * @return Returns the objectType. 526 */ 527 public ObjectType getObjectType() { 528 return objectType; 529 } 530 531 /** 532 * Sets the objectType attribute value. 533 * 534 * @param objectType The objectType to set. 535 */ 536 public void setObjectType(ObjectType objectType) { 537 this.objectType = objectType; 538 } 539 540 protected String getValue(String headerLine, int s, int e) { 541 return org.springframework.util.StringUtils.trimTrailingWhitespace(StringUtils.substring(headerLine, s, e)); 542 } 543 544 /** 545 * @return the static instance of the CollectorBatchrFieldUtil 546 */ 547 protected static CollectorDetailFieldUtil getCollectorDetailFieldUtil() { 548 if (collectorDetailFieldUtil == null) { 549 collectorDetailFieldUtil = new CollectorDetailFieldUtil(); 550 } 551 return collectorDetailFieldUtil; 552 } 553 554 public void setFromFileForCollectorDetail(String detailLine, Date curDate, UniversityDate universityDate, int lineNumber, MessageMap messageMap) { 555 556 try{ 557 558 final Map<String, Integer> pMap = getCollectorDetailFieldUtil().getFieldBeginningPositionMap(); 559 560 detailLine = org.apache.commons.lang.StringUtils.rightPad(detailLine, GeneralLedgerConstants.getSpaceAllCollectorDetailFields().length(), ' '); 561 562 setCreateDate(curDate); 563 if (!GeneralLedgerConstants.getSpaceUniversityFiscalYear().equals(detailLine.substring(pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE)))) { 564 try { 565 setUniversityFiscalYear(new Integer(getValue(detailLine, pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE)))); 566 } 567 catch (NumberFormatException e) { 568 messageMap.putError(KFSConstants.GLOBAL_ERRORS, KFSKeyConstants.ERROR_CUSTOM, "Collector detail university fiscal year " + lineNumber + " string " + detailLine.substring(pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE))); 569 setUniversityFiscalYear(null); 570 } 571 } 572 else { 573 setUniversityFiscalYear(null); 574 } 575 576 if (!GeneralLedgerConstants.getSpaceChartOfAccountsCode().equals(detailLine.substring(pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE)))) 577 setChartOfAccountsCode(getValue(detailLine, pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE), pMap.get(KFSPropertyConstants.ACCOUNT_NUMBER))); 578 else 579 setChartOfAccountsCode(GeneralLedgerConstants.getSpaceChartOfAccountsCode()); 580 setAccountNumber(getValue(detailLine, pMap.get(KFSPropertyConstants.ACCOUNT_NUMBER), pMap.get(KFSPropertyConstants.SUB_ACCOUNT_NUMBER))); 581 582 // if chart code is empty while accounts cannot cross charts, then derive chart code from account number 583 AccountService acctserv = SpringContext.getBean(AccountService.class); 584 if (StringUtils.isEmpty(getChartOfAccountsCode()) && StringUtils.isNotEmpty(getAccountNumber()) && !acctserv.accountsCanCrossCharts()) { 585 Account account = acctserv.getUniqueAccountForAccountNumber(getAccountNumber()); 586 if (account != null) { 587 setChartOfAccountsCode(account.getChartOfAccountsCode()); 588 } 589 } 590 591 setSubAccountNumber(getValue(detailLine, pMap.get(KFSPropertyConstants.SUB_ACCOUNT_NUMBER), pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_CODE))); 592 setFinancialObjectCode(getValue(detailLine, pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE))); 593 setFinancialSubObjectCode(getValue(detailLine, pMap.get(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE))); 594 // We are in Collector Detail for ID Billing Details because the value from file positions 25, 26 = DT. We don not want to set 595 // Financial Balance Type Code = DT. Sterling stated for now we can set it to "AC". 596 // setFinancialBalanceTypeCode(getValue(detailLine, pMap.get(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_TYPE_CODE))); 597 setFinancialBalanceTypeCode(GeneralLedgerConstants.FINALNCIAL_BALANCE_TYPE_FOR_COLLECTOR_DETAIL_RECORD); 598 setFinancialObjectTypeCode(getValue(detailLine, pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_TYPE_CODE), pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_SEQUENCE_NUMBER))); 599 setUniversityFiscalPeriodCode(universityDate.getUniversityFiscalAccountingPeriod()); 600 setCollectorDetailSequenceNumber(getValue(detailLine, pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_SEQUENCE_NUMBER), pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE))); 601 setFinancialDocumentTypeCode(getValue(detailLine, pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE))); 602 setFinancialSystemOriginationCode(getValue(detailLine, pMap.get(KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE), pMap.get(KFSPropertyConstants.DOCUMENT_NUMBER))); 603 setDocumentNumber(getValue(detailLine, pMap.get(KFSPropertyConstants.DOCUMENT_NUMBER), pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_AMOUNT))); 604 try { 605 setCollectorDetailItemAmount(getValue(detailLine, pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_AMOUNT), pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_GL_CREDIT_CODE))); 606 } 607 catch (NumberFormatException e) { 608 setCollectorDetailItemAmount(KualiDecimal.ZERO); 609 messageMap.putError(KFSConstants.GLOBAL_ERRORS, KFSKeyConstants.ERROR_CUSTOM, "Collector detail amount cannot be parsed on line " + lineNumber + " amount string " + detailLine.substring(pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_AMOUNT), pMap.get(KFSPropertyConstants.GL_CREDIT_CODE))); 610 } 611 if (KFSConstants.GL_CREDIT_CODE.equalsIgnoreCase(getValue(detailLine, pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_GL_CREDIT_CODE), pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_NOTE_TEXT)))) { 612 setCollectorDetailItemAmount(getCollectorDetailItemAmount().negated()); 613 } 614 setCollectorDetailNoteText(getValue(detailLine, pMap.get(KFSPropertyConstants.COLLECTOR_DETAIL_NOTE_TEXT), GeneralLedgerConstants.getSpaceAllCollectorDetailFields().length())); 615 616 if (org.apache.commons.lang.StringUtils.isEmpty(getSubAccountNumber())) { 617 setSubAccountNumber(KFSConstants.getDashSubAccountNumber()); 618 } 619 if (org.apache.commons.lang.StringUtils.isEmpty(getFinancialSubObjectCode())) { 620 setFinancialSubObjectCode(KFSConstants.getDashFinancialSubObjectCode()); 621 } 622 if (org.apache.commons.lang.StringUtils.isEmpty(getCollectorDetailSequenceNumber())) { 623 setCollectorDetailSequenceNumber(" "); 624 } 625 } catch (Exception e){ 626 throw new RuntimeException(e + " occurred in CollectorDetail.setFromFileForCollectorDetail()"); 627 } 628 } 629 }