001 /* 002 * Jpkg - Java library and tools for operating system package creation. 003 * 004 * Copyright (c) 2007-2008 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.ant.dpkg.dependencies; 032 033 import java.util.List; 034 035 import com.threerings.antidote.field.ListField; 036 import com.threerings.jpkg.debian.dependency.PackageConflicts; 037 import com.threerings.jpkg.debian.dependency.PackageDependencies; 038 import com.threerings.jpkg.debian.dependency.PackageReplacements; 039 040 /** 041 * The <dpkg> task <package> <dependencies> field. Used to add package dependency information. 042 * @see PackageDependencies 043 * @see PackageConflicts 044 * @see PackageReplacements 045 */ 046 public class Dependencies extends ListField<PackageInfoDependency> 047 { 048 // from Field 049 public String getFieldName () 050 { 051 return "dependencies"; 052 } 053 054 @Override // from ListField 055 public String getChildFieldName () 056 { 057 return "depedency"; 058 } 059 060 /** 061 * Ant adder field: dependency. All {@link BaseDependency}. 062 */ 063 public void add (BaseDependency<?> dependency) 064 { 065 appendRequiresValidation(dependency); 066 } 067 068 /** 069 * Ant adder field: alternatives. 070 */ 071 public void addAlternatives (Alternatives alternatives) 072 { 073 appendRequiresValidation(alternatives); 074 } 075 076 /** 077 * Returns the user data converted into a {@link PackageInfoDependency} objects. 078 * Cannot be called before validate(). 079 */ 080 public List<PackageInfoDependency> getDependencies () 081 { 082 requireChildFieldValidation(); 083 return _validatedDependencies; 084 } 085 086 @Override // from BaseComponent 087 protected void validateField () 088 { 089 if (noChildFieldsDefined()) { 090 return; 091 } 092 093 switch (validateFieldList()) { 094 case ALL_INVALID: 095 case SOME_INVALID: 096 return; 097 098 case ALL_VALID: 099 break; 100 } 101 102 _validatedDependencies = getValidatedFieldList(); 103 } 104 105 /** The list of {@link PackageInfoDependency} objects. Populated after all fields pass validation. */ 106 private List<PackageInfoDependency> _validatedDependencies; 107 }