Java tutorial
/* * Copyright 2015 Collective, Inc. * * Licensed 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 com.collective.celos.ci.testing.fixtures.compare; import com.collective.celos.ci.testing.structure.tree.TreeObjectProcessor; import com.collective.celos.ci.testing.structure.tree.TreeObject; import com.google.common.collect.Maps; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.text.StrBuilder; import java.io.IOException; import java.nio.file.Path; import java.util.Collections; import java.util.Map; /** * Created by akonopko on 10/8/14. */ public class FixObjectCompareResult implements TreeObject<FixObjectCompareResult> { public static final FixObjectCompareResult SUCCESS = new FixObjectCompareResult(Collections.EMPTY_MAP, "", Status.SUCCESS); private final Map<String, FixObjectCompareResult> children; private final String message; private final Status status; public enum Status { FAIL, SUCCESS } public FixObjectCompareResult(Map<String, FixObjectCompareResult> children, String message, Status status) { this.children = children; this.message = message; this.status = status; } public static FixObjectCompareResult failed(String message) { return new FixObjectCompareResult(Collections.EMPTY_MAP, message, Status.FAIL); } public static FixObjectCompareResult wrapFailed(Map<String, FixObjectCompareResult> child, String message) { return new FixObjectCompareResult(child, message, Status.FAIL); } public Map<String, FixObjectCompareResult> getChildren() { return children; } public Status getStatus() { return status; } public String getMessage() { return message; } public String generateDescription() throws IOException { StrBuilder strBuilder = new StrBuilder(); PathToMessageProcessor pathToMessage = new PathToMessageProcessor(); TreeObjectProcessor.process(this, pathToMessage); for (Map.Entry<Path, String> pathMessage : pathToMessage.messages.entrySet()) { String keyText = StringUtils.isEmpty(pathMessage.getKey().toString()) ? "" : pathMessage.getKey() + " : "; strBuilder.appendln(keyText + pathMessage.getValue()); } return strBuilder.toString(); } private static class PathToMessageProcessor extends TreeObjectProcessor<FixObjectCompareResult> { private final Map<Path, String> messages = Maps.newLinkedHashMap(); @Override public void process(Path path, FixObjectCompareResult ff) throws IOException { if (StringUtils.isNotEmpty(ff.message)) { messages.put(path, ff.message); } } } }