001    package org.apache.maven.scm.provider.accurev;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *    http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import java.util.Collection;
023    import java.util.Date;
024    import java.util.HashSet;
025    
026    public class Transaction
027    {
028    
029        public class Version
030        {
031    
032            private String realSpec;
033    
034            private String virtualSpec;
035    
036            private String ancestorSpec;
037    
038            private Long elementId;
039    
040            private String elementName;
041    
042            private Version( Long id, String elementName, String virtualSpec, String realSpec, String ancestor )
043            {
044                this.elementId = id;
045                this.virtualSpec = virtualSpec;
046                this.realSpec = realSpec;
047                this.ancestorSpec = ancestor;
048                this.elementName = elementName;
049            }
050    
051            public String getVirtualSpec()
052            {
053                return virtualSpec;
054            }
055    
056            public void setVirtualSpec( String virtualSpec )
057            {
058                this.virtualSpec = virtualSpec;
059            }
060    
061            public String getAncestorSpec()
062            {
063                return ancestorSpec;
064            }
065    
066            public void setAncestorSpec( String ancestorSpec )
067            {
068                this.ancestorSpec = ancestorSpec;
069            }
070    
071            public void setRealSpec( String realSpec )
072            {
073                this.realSpec = realSpec;
074            }
075    
076            public void setElementId( Long elementId )
077            {
078                this.elementId = elementId;
079            }
080    
081            public String getRealSpec()
082            {
083                return realSpec;
084            }
085    
086            public Long getElementId()
087            {
088                return elementId;
089            }
090    
091            public Transaction getTransaction()
092            {
093                return getOuterTransaction();
094            }
095    
096            public String getElementName()
097            {
098                return elementName;
099            }
100    
101            @Override
102            public String toString()
103            {
104                return String.format( "Version: %s (%d) %s (%s) anc=%s", elementName, elementId, virtualSpec, realSpec,
105                                      ancestorSpec );
106            }
107    
108        }
109    
110        private Collection<Version> versions = new HashSet<Version>();
111    
112        private long id;
113    
114        public Transaction( Long id, Date when, String tranType, String user )
115        {
116            this.id = id;
117            this.tranType = tranType;
118            this.when = when;
119            this.author = user;
120        }
121    
122        public long getId()
123        {
124            return id;
125        }
126    
127        public String getTranType()
128        {
129            return tranType;
130        }
131    
132        public String getComment()
133        {
134            return comment;
135        }
136    
137        public void setComment( String comment )
138        {
139            this.comment = comment;
140        }
141    
142        private Date when;
143    
144        private String tranType;
145    
146        private String author;
147    
148        private String comment;
149    
150        public long getTranId()
151        {
152            return id;
153        }
154    
155        private Transaction getOuterTransaction()
156        {
157            return this;
158        }
159    
160        public Collection<Version> getVersions()
161        {
162            return versions;
163        }
164    
165        public Date getWhen()
166        {
167            return when;
168        }
169    
170        public String getType()
171        {
172            return tranType;
173        }
174    
175        public String getAuthor()
176        {
177            return author;
178        }
179    
180        public void addVersion( Long id, String name, String virtualSpec, String realSpec, String ancestor )
181        {
182            Transaction.Version v = new Version( id, name, virtualSpec, realSpec, ancestor );
183            versions.add( v );
184    
185        }
186    
187        public String toString()
188        {
189            return String.format( "Transaction: %d, %s at %tc by %s -'%s'", this.getId(), this.getTranType(),
190                                  this.getWhen(), this.getAuthor(), this.getComment() );
191        }
192    }