blob: 2782fac0d96545ef4d1064df31da8d9cf5017298 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.sqoop.validation;
import org.apache.sqoop.validation.validators.Validator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Result of validation execution.
*/
public class ValidationResult {
/**
* All messages for each named item.
*/
Map<String, List<Message>> messages;
/**
* Overall status.
*/
Status status;
public ValidationResult() {
messages = new HashMap<String, List<Message>>();
status = Status.getDefault();
}
/**
* Add given validator result to this instance.
*
* @param name Full name of the validated object
* @param validator Executed validator
*/
public void addValidator(String name, Validator validator) {
if(validator.getStatus() == Status.getDefault()) {
return;
}
status = Status.getWorstStatus(status, validator.getStatus());
if(messages.containsKey(name)) {
messages.get(name).addAll(validator.getMessages());
} else {
messages.put(name, validator.getMessages());
}
}
/**
* Merge results with another validation result.
*
* @param result Other validation result
*/
public void merge(ValidationResult result) {
messages.putAll(result.messages);
status = Status.getWorstStatus(status, result.status);
}
/**
* Method to directly add messages for given name.
*
* This method will replace previous messages for given name.
*
* @param name Name of the entity
* @param messages List of messages associated with the name
*/
public void addMessages(String name, List<Message> messages) {
this.messages.put(name, messages);
for(Message message : messages) {
this.status = Status.getWorstStatus(status, message.getStatus());
}
}
public Status getStatus() {
return status;
}
public Map<String, List<Message>> getMessages() {
return messages;
}
}