001    /*
002      GRANITE DATA SERVICES
003      Copyright (C) 2011 GRANITE DATA SERVICES S.A.S.
004    
005      This file is part of Granite Data Services.
006    
007      Granite Data Services is free software; you can redistribute it and/or modify
008      it under the terms of the GNU Library General Public License as published by
009      the Free Software Foundation; either version 2 of the License, or (at your
010      option) any later version.
011    
012      Granite Data Services is distributed in the hope that it will be useful, but
013      WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
014      FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
015      for more details.
016    
017      You should have received a copy of the GNU Library General Public License
018      along with this library; if not, see <http://www.gnu.org/licenses/>.
019    */
020    
021    package org.granite.builder.properties;
022    
023    import org.granite.generator.as3.PackageTranslator;
024    
025    import com.thoughtworks.xstream.annotations.XStreamAlias;
026    import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
027    
028    /**
029     * @author Franck WOLFF
030     */
031    @XStreamAlias(value="translator")
032    public class Gas3Translator implements Validable {
033    
034            @XStreamAsAttribute
035            private String java;
036            
037            @XStreamAsAttribute
038            private String as3;
039            
040            private transient PackageTranslator packageTranslator = null;
041            
042            public Gas3Translator(String java, String as3) {
043                    this.java = java;
044                    this.as3 = as3;
045            }
046    
047            public String getJava() {
048                    return java;
049            }
050    
051            public void setJava(String java) {
052                    this.java = java;
053            }
054    
055            public String getAs3() {
056                    return as3;
057            }
058    
059            public void setAs3(String as3) {
060                    this.as3 = as3;
061            }
062    
063            public void validate(ValidationResults results) {
064                    if (java == null || as3 == null)
065                            results.getErrors().add("translator: java and as3 cannot be null");
066            }
067            
068            public PackageTranslator getPackageTranslator() {
069                    if (packageTranslator == null)
070                            packageTranslator = new PackageTranslator(java, as3);
071                    return packageTranslator;
072            }
073    
074            @Override
075            public boolean equals(Object obj) {
076                    if (obj == this)
077                            return true;
078                    if (!(obj instanceof Gas3Translator))
079                            return false;
080                    Gas3Translator g3t = (Gas3Translator)obj;
081                    return (java == null ? g3t.java == null : java.equals(g3t.java));
082            }
083    
084            @Override
085            public int hashCode() {
086                    return java != null ? java.hashCode() : 0;
087            }
088    }