1 /* 2 * Copyright (C) 2010, Mathias Kinzler <mathias.kinzler@sap.com> 3 * Copyright (C) 2009, Constantine Plotnikov <constantine.plotnikov@gmail.com> 4 * Copyright (C) 2007, Dave Watson <dwatson@mimvista.com> 5 * Copyright (C) 2008-2010, Google Inc. 6 * Copyright (C) 2009, Google, Inc. 7 * Copyright (C) 2009, JetBrains s.r.o. 8 * Copyright (C) 2007-2008, Robin Rosenberg <robin.rosenberg@dewire.com> 9 * Copyright (C) 2006-2008, Shawn O. Pearce <spearce@spearce.org> 10 * Copyright (C) 2008, Thad Hughes <thadh@thad.corp.google.com> 11 * and other copyright owners as documented in the project's IP log. 12 * 13 * This program and the accompanying materials are made available 14 * under the terms of the Eclipse Distribution License v1.0 which 15 * accompanies this distribution, is reproduced below, and is 16 * available at http://www.eclipse.org/org/documents/edl-v10.php 17 * 18 * All rights reserved. 19 * 20 * Redistribution and use in source and binary forms, with or 21 * without modification, are permitted provided that the following 22 * conditions are met: 23 * 24 * - Redistributions of source code must retain the above copyright 25 * notice, this list of conditions and the following disclaimer. 26 * 27 * - Redistributions in binary form must reproduce the above 28 * copyright notice, this list of conditions and the following 29 * disclaimer in the documentation and/or other materials provided 30 * with the distribution. 31 * 32 * - Neither the name of the Eclipse Foundation, Inc. nor the 33 * names of its contributors may be used to endorse or promote 34 * products derived from this software without specific prior 35 * written permission. 36 * 37 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 38 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 39 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 40 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 41 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 42 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 43 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 44 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 45 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 46 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 47 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 48 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 49 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 50 */ 51 52 package org.eclipse.jgit.lib; 53 54 import org.eclipse.jgit.util.StringUtils; 55 56 /** A line in a Git {@link Config} file. */ 57 class ConfigLine { 58 /** The text content before entry. */ 59 String prefix; 60 61 /** The section name for the entry. */ 62 String section; 63 64 /** Subsection name. */ 65 String subsection; 66 67 /** The key name. */ 68 String name; 69 70 /** The value. */ 71 String value; 72 73 /** The text content after entry. */ 74 String suffix; 75 76 /** The source from which this line was included from. */ 77 String includedFrom; 78 79 ConfigLine forValue(String newValue) { 80 final ConfigLineLine.html#ConfigLine">ConfigLine e = new ConfigLine(); 81 e.prefix = prefix; 82 e.section = section; 83 e.subsection = subsection; 84 e.name = name; 85 e.value = newValue; 86 e.suffix = suffix; 87 e.includedFrom = includedFrom; 88 return e; 89 } 90 91 boolean match(final String aSection, final String aSubsection, 92 final String aKey) { 93 return eqIgnoreCase(section, aSection) 94 && eqSameCase(subsection, aSubsection) 95 && eqIgnoreCase(name, aKey); 96 } 97 98 boolean match(String aSection, String aSubsection) { 99 return eqIgnoreCase(section, aSection) 100 && eqSameCase(subsection, aSubsection); 101 } 102 103 private static boolean eqIgnoreCase(String a, String b) { 104 if (a == null && b == null) 105 return true; 106 if (a == null || b == null) 107 return false; 108 return StringUtils.equalsIgnoreCase(a, b); 109 } 110 111 private static boolean eqSameCase(String a, String b) { 112 if (a == null && b == null) 113 return true; 114 if (a == null || b == null) 115 return false; 116 return a.equals(b); 117 } 118 119 /** {@inheritDoc} */ 120 @SuppressWarnings("nls") 121 @Override 122 public String toString() { 123 if (section == null) 124 return "<empty>"; 125 StringBuilder b = new StringBuilder(section); 126 if (subsection != null) 127 b.append(".").append(subsection); 128 if (name != null) 129 b.append(".").append(name); 130 if (value != null) 131 b.append("=").append(value); 132 return b.toString(); 133 } 134 }