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.ant.dpkg.info; 032 033 import com.threerings.antidote.field.BaseField; 034 import com.threerings.antidote.field.RequiredField; 035 import com.threerings.jpkg.debian.ControlDataInvalidException; 036 import com.threerings.jpkg.debian.PackageMaintainer; 037 038 import static com.threerings.antidote.MutabilityHelper.requiresValidation; 039 040 041 /** 042 * Stores the <info> <maintainer> field, which is the package maintainer. 043 * @see PackageMaintainer 044 */ 045 public class Maintainer extends BaseField 046 { 047 // from Field 048 public String getFieldName () 049 { 050 return "maintainer"; 051 } 052 053 /** 054 * Ant adder field: Set the maintainer name. 055 */ 056 public void addName (MaintainerName name) 057 { 058 _name.setField(name); 059 } 060 061 /** 062 * Ant adder field: Set the maintainer email address. 063 */ 064 public void addEmail (MaintainerEmail email) 065 { 066 _email.setField(email); 067 } 068 069 /** 070 * Returns the user data converted into a {@link PackageMaintainer}. Cannot be called before validate(). 071 */ 072 public PackageMaintainer getPackageMaintainer () 073 { 074 requiresValidation(_packageMaintainer); 075 return _packageMaintainer; 076 } 077 078 @Override // from BaseComponent 079 protected void validateField () 080 { 081 try { 082 switch (validateChildFields(_name, _email)) { 083 case ALL_INVALID: 084 case SOME_INVALID: 085 return; 086 087 case ALL_VALID: 088 _packageMaintainer = new PackageMaintainer( 089 _name.getField().getName(), _email.getField().getEmail()); 090 return; 091 } 092 093 } catch (final ControlDataInvalidException cdie) { 094 appendViolation(new ControlDataViolation(this, cdie)); 095 } 096 } 097 098 /** Ant adder/setter fields. */ 099 private final RequiredField<MaintainerName> _name = 100 new RequiredField<MaintainerName>(MaintainerName.class, this); 101 private final RequiredField<MaintainerEmail> _email = 102 new RequiredField<MaintainerEmail>(MaintainerEmail.class, this); 103 104 /** The PackageMaintainer object representing the user supplied data. */ 105 private PackageMaintainer _packageMaintainer; 106 }