001package 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
022import java.util.Collection;
023import java.util.Date;
024import java.util.HashSet;
025
026public 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}