/** * Copyright (C) 2009 Future Invent Informationsmanagement GmbH. All rights * reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 3 of the License, or (at your option) any * later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see . */ package org.fuin.utils4j; import java.io.File; /** * One or more attempts to merge properties failed. */ public final class MergeException extends Exception { private static final long serialVersionUID = 1L; private final File file; private final Problem[] problems; /** * Constructor with file and problem list. * * @param file * File that caused the exception. * @param problems * List of one or more problems. */ public MergeException(final File file, final Problem[] problems) { super("The properties file '" + file + "' was modified by someone else " + "and cannot be merged!"); Utils4J.checkNotNull("file", file); this.file = file; Utils4J.checkNotNull("problems", problems); this.problems = problems; } /** * File that caused the exception. * * @return Merged file. */ public final File getFile() { return file; } /** * Returns an array with the problems. * * @return Problem detail list. */ public final Problem[] getProblems() { return problems; } /** * Error while merging a property. */ public static final class Problem { /** Message describing the problem. */ private final String text; /** Property from memory. */ private final Property prop; /** Property from file. */ private final Property fileProp; /** * Constructor with message and properties. * * @param text * Message describing the problem. * @param prop * Property from memory. * @param fileProp * Property from file. */ public Problem(final String text, final Property prop, final Property fileProp) { super(); Utils4J.checkNotNull("text", text); this.text = text; Utils4J.checkNotNull("prop", prop); this.prop = prop; Utils4J.checkNotNull("fileProp", fileProp); this.fileProp = fileProp; } /** * Returns the message describing the problem. * * @return Detailed message. */ public final String getText() { return text; } /** * Returns the property from memory. * * @return Property. */ public final Property getProp() { return prop; } /** * Returns the property from disk. * * @return Property. */ public final Property getFileProp() { return fileProp; } /** * {@inheritDoc} */ public final String toString() { return text + " - Property: {" + prop + "}, File Property: {" + fileProp + "}"; } } }