001 /*----------------------------------------------------------------------- 002 * Copyright (C) 2006 003 * Associated Universities, Inc. Washington DC, USA. 004 * This program is free software; you can redistribute it and/or 005 * modify it under the terms of the GNU General Public License as 006 * published by the Free Software Foundation; either version 2 of 007 * the License, or (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * Correspondence concerning this software should be addressed as follows: 015 * Internet email: switz@nrao.edu 016 * Postal address: SSS Software 017 * National Radio Astronomy Observatory 018 * Post Office Box 0 019 * Socorro, NM 87801 USA 020 *-----------------------------------------------------------------------*/ 021 package edu.nrao.sss.model.parameter; 022 023 import java.util.List; 024 025 import org.apache.log4j.Logger; 026 027 import edu.nrao.sss.validation.AbstractValidator; 028 import edu.nrao.sss.validation.FailureSeverity; 029 import edu.nrao.sss.validation.Validation; 030 import edu.nrao.sss.validation.ValidationFailure; 031 import edu.nrao.sss.validation.ValidationPurpose; 032 033 public class BatchUpdateFileValidation extends Validation<BatchUpdateFile> { 034 035 private static final Logger log = Logger.getLogger(BatchUpdateFileValidation.class); 036 037 private String debugMessage; 038 039 private String displayMessage; 040 041 protected BatchUpdateFileValidation(AbstractValidator<BatchUpdateFile> validationContainer, 042 ValidationPurpose reasonForValidation) { 043 super(validationContainer, reasonForValidation); 044 severity = (reasonForValidation == ValidationPurpose.CERTIFY_READY_TO_USE) ? FailureSeverity.ERROR 045 : FailureSeverity.WARNING; 046 } 047 048 protected String debugMessage() { 049 return debugMessage; 050 } 051 052 protected String displayMessage() { 053 return displayMessage; 054 } 055 056 protected boolean passesTest() { 057 BatchUpdateFile target = container.getTarget(); 058 List<String> fileContents = target.getFileContents(); 059 int lineNumber = 0; 060 for (String line : fileContents) { 061 lineNumber++; 062 BatchUpdateLine batchUpdateLine = new BatchUpdateLine(line); 063 List<ValidationFailure> failureList = new BatchUpdateLineValidator().validate(batchUpdateLine, 064 ValidationPurpose.CERTIFY_READY_TO_USE); 065 if (!failureList.isEmpty()) { 066 log.error(failureList.get(0).getDisplayMessage()); 067 debugMessage = "line " + lineNumber + ": " + failureList.get(0).getDebugMessage(); 068 displayMessage = "line " + lineNumber + ": " + failureList.get(0).getDisplayMessage(); 069 return false; 070 } else if (!batchUpdateLine.isComment()) { 071 Parameter parameter = target.getParameterMap().get(new Integer(lineNumber)); 072 failureList = new ParameterValidator().validate(parameter, ValidationPurpose.CERTIFY_READY_TO_USE); 073 if (!failureList.isEmpty()) { 074 log.error(failureList.get(0).getDisplayMessage()); 075 debugMessage = "line " + lineNumber + ": " + failureList.get(0).getDebugMessage(); 076 displayMessage = "line " + lineNumber + ": " + failureList.get(0).getDisplayMessage(); 077 return false; 078 } 079 } 080 } 081 return true; 082 } 083 }