Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
ScmFileStatus |
|
| 2.5;2,5 |
1 | package org.apache.maven.scm; | |
2 | ||
3 | import java.io.Serializable; | |
4 | ||
5 | /* | |
6 | * Licensed to the Apache Software Foundation (ASF) under one | |
7 | * or more contributor license agreements. See the NOTICE file | |
8 | * distributed with this work for additional information | |
9 | * regarding copyright ownership. The ASF licenses this file | |
10 | * to you under the Apache License, Version 2.0 (the | |
11 | * "License"); you may not use this file except in compliance | |
12 | * with the License. You may obtain a copy of the License at | |
13 | * | |
14 | * http://www.apache.org/licenses/LICENSE-2.0 | |
15 | * | |
16 | * Unless required by applicable law or agreed to in writing, | |
17 | * software distributed under the License is distributed on an | |
18 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
19 | * KIND, either express or implied. See the License for the | |
20 | * specific language governing permissions and limitations | |
21 | * under the License. | |
22 | */ | |
23 | ||
24 | /** | |
25 | * @TODO move to a real enum | |
26 | * <p/> | |
27 | * Typesafe enum for file status | |
28 | * </p> | |
29 | * <p/> | |
30 | * There are two types of status defined in this class: <br/> | |
31 | * 1) Status: Changes in the working tree, not yet committed to the repository eg. MODIFIED <br/> | |
32 | * 2) Transaction: The file is part of some transaction with the repository eg. CHECKED_IN | |
33 | * </p> | |
34 | * | |
35 | * @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a> | |
36 | * @version $Id: ScmFileStatus.java 1211633 2011-12-07 21:07:37Z olamy $ | |
37 | */ | |
38 | public final class ScmFileStatus | |
39 | implements Serializable | |
40 | { | |
41 | private static final long serialVersionUID = -7840223279162817915L; | |
42 | ||
43 | /** | |
44 | * File is added to the working tree and does not yet exist in the repository | |
45 | */ | |
46 | 0 | public static final ScmFileStatus ADDED = new ScmFileStatus( "added" ); |
47 | ||
48 | /** | |
49 | * File is removed from the working tree thus not revisioned anymore.<br> | |
50 | * The file is still present in the repository.<br> | |
51 | * The file could be deleted from the filesystem depending on the provider. | |
52 | */ | |
53 | 0 | public static final ScmFileStatus DELETED = new ScmFileStatus( "deleted" ); |
54 | ||
55 | /** | |
56 | * The file has been modified in the working tree. | |
57 | */ | |
58 | 0 | public static final ScmFileStatus MODIFIED = new ScmFileStatus( "modified" ); |
59 | ||
60 | /** | |
61 | * The file has been renamed or moved in the working tree. | |
62 | * @since 1.7 | |
63 | */ | |
64 | 0 | public static final ScmFileStatus RENAMED = new ScmFileStatus( "renamed" ); |
65 | ||
66 | /** | |
67 | * The file has been copied in the working tree. | |
68 | * @since 1.7 | |
69 | */ | |
70 | 0 | public static final ScmFileStatus COPIED = new ScmFileStatus( "copied" ); |
71 | ||
72 | /** | |
73 | * The file is missing in the working tree. | |
74 | */ | |
75 | 0 | public static final ScmFileStatus MISSING = new ScmFileStatus( "missing" ); |
76 | ||
77 | /** | |
78 | * File from working tree is checked into the repository | |
79 | */ | |
80 | 0 | public static final ScmFileStatus CHECKED_IN = new ScmFileStatus( "checked-in" ); |
81 | ||
82 | /** | |
83 | * File is checked out from the repository and into the working tree | |
84 | */ | |
85 | 0 | public static final ScmFileStatus CHECKED_OUT = new ScmFileStatus( "checked-out" ); |
86 | ||
87 | /** | |
88 | * The file in the working tree has differences to the one in repository that | |
89 | * conflicts ie. it cannot automatically be merged. | |
90 | */ | |
91 | 0 | public static final ScmFileStatus CONFLICT = new ScmFileStatus( "conflict" ); |
92 | ||
93 | /** | |
94 | * The file in the working tree has been updated with changes from the repository. | |
95 | */ | |
96 | 0 | public static final ScmFileStatus PATCHED = new ScmFileStatus( "patched" ); |
97 | ||
98 | /** | |
99 | * The file is added, removed or updated from the repository, thus its | |
100 | * up-to-date with the version in the repository. See also isUpdate() | |
101 | */ | |
102 | 0 | public static final ScmFileStatus UPDATED = new ScmFileStatus( "updated" ); |
103 | ||
104 | /** | |
105 | * The file is part of a tag. | |
106 | */ | |
107 | 0 | public static final ScmFileStatus TAGGED = new ScmFileStatus( "tagged" ); |
108 | ||
109 | /** | |
110 | * The file is locked. | |
111 | */ | |
112 | 0 | public static final ScmFileStatus LOCKED = new ScmFileStatus( "locked" ); |
113 | ||
114 | /** | |
115 | * The file is in the working tree but is not versioned and not ignored either. | |
116 | */ | |
117 | 0 | public static final ScmFileStatus UNKNOWN = new ScmFileStatus( "unknown" ); |
118 | ||
119 | /** | |
120 | * @since 1.5 | |
121 | * The file is being edited | |
122 | */ | |
123 | 0 | public static final ScmFileStatus EDITED = new ScmFileStatus( "edit" ); |
124 | ||
125 | /** | |
126 | * The status name | |
127 | */ | |
128 | private final String name; | |
129 | ||
130 | private ScmFileStatus( String name ) | |
131 | 0 | { |
132 | 0 | this.name = name; |
133 | 0 | } |
134 | ||
135 | /** {@inheritDoc} */ | |
136 | public String toString() | |
137 | { | |
138 | 0 | return name; |
139 | } | |
140 | ||
141 | /** | |
142 | * There are changes in the working tree that are not committed to the repository, or <br> | |
143 | * the file is unknown for the working tree. | |
144 | * | |
145 | * @return true on changes in the working tree or if the file is unknown. | |
146 | */ | |
147 | public boolean isStatus() | |
148 | { | |
149 | 0 | return this == UNKNOWN || isDiff(); |
150 | } | |
151 | ||
152 | /** | |
153 | * There are changes in the working tree that are not committed to the repository. <br> | |
154 | * | |
155 | * @return true on changes in the working tree | |
156 | */ | |
157 | public boolean isDiff() | |
158 | { | |
159 | 0 | return this == ADDED || this == DELETED || this == MODIFIED; |
160 | } | |
161 | ||
162 | /** | |
163 | * @return true if the file was part of a transaction with the repository. | |
164 | */ | |
165 | public boolean isTransaction() | |
166 | { | |
167 | 0 | return this == CHECKED_IN || this == CHECKED_OUT || this == LOCKED || this == TAGGED || isUpdate(); |
168 | } | |
169 | ||
170 | /** | |
171 | * File is part of an update transaction with the repository.<br> | |
172 | * Note: ADDED and REMOVED are not an update status since they indicates | |
173 | * that the working tree has changed.<br> | |
174 | * An update indicates the opposite, that the repository was changed compared to | |
175 | * the working tree and that it is now synchronized unless there are conflicts. | |
176 | * | |
177 | * @return true if the status is conflict, updated or patched. | |
178 | */ | |
179 | public boolean isUpdate() | |
180 | { | |
181 | 0 | return this == CONFLICT || this == UPDATED || this == PATCHED; |
182 | } | |
183 | } |