001 /* 002 * Jpkg - Java library and tools for operating system package creation. 003 * 004 * Copyright (c) 2007 Three Rings Design, Inc. 005 * All rights reserved. 006 * 007 * Redistribution and use in source and binary forms, with or without 008 * modification, are permitted provided that the following conditions 009 * are met: 010 * 1. Redistributions of source code must retain the above copyright 011 * notice, this list of conditions and the following disclaimer. 012 * 2. Redistributions in binary form must reproduce the above copyright 013 * notice, this list of conditions and the following disclaimer in the 014 * documentation and/or other materials provided with the distribution. 015 * 3. Neither the name of the copyright owner nor the names of contributors 016 * may be used to endorse or promote products derived from this software 017 * without specific prior written permission. 018 * 019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 020 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 021 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 022 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 023 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 024 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 025 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 026 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 027 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 028 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 029 * POSSIBILITY OF SUCH DAMAGE. 030 */ 031 package com.threerings.jpkg.debian.dependency; 032 033 import java.util.Arrays; 034 import java.util.List; 035 036 /** 037 * Holds a list of Dependency objects representing a list of packages that a given package must 038 * depend on only one of. 039 * @see <a href="http://www.debian.org/doc/debian-policy/ch-relationships.html#s-depsyntax">Debian Policy Manual</a> 040 */ 041 public class DependencyAlternatives 042 implements ControlFileDependency 043 { 044 /** 045 * Construct a varargs list of alternative dependencies for a package to depend on. 046 * @see #DependencyAlternatives(List) 047 */ 048 public DependencyAlternatives (PackageDependency...dependencies) 049 { 050 this(Arrays.asList(dependencies)); 051 } 052 053 /** 054 * Construct a list of alternative dependencies for a package to depend on. The list indicates 055 * that at least one of the packages must be installed in order for the dependency to be fulfilled. 056 */ 057 public DependencyAlternatives (List<PackageDependency> dependencies) 058 { 059 _dependencies = dependencies; 060 } 061 062 // from ControlFileDependency 063 public String asString () 064 { 065 final StringBuilder builder = new StringBuilder(); 066 for (final PackageDependency dependency : _dependencies) { 067 if (builder.length() > 0) { 068 builder.append(" | "); 069 } 070 builder.append(dependency.asString()); 071 } 072 return builder.toString(); 073 } 074 075 /** The list of dependencies held by this alternatives class. */ 076 private final List<PackageDependency> _dependencies; 077 }