1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.extension.distribution.internal.job

File DistributionJobStatus.java

 

Coverage histogram

../../../../../../img/srcFileCovDistChart6.png
69% of files have more coverage

Code metrics

20
41
17
1
203
131
27
0.66
2.41
17
1.59

Classes

Class Line # Actions
DistributionJobStatus 40 41 0% 27 33
0.576923157.7%
 

Contributing tests

No tests hitting this source file were found.

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20    package org.xwiki.extension.distribution.internal.job;
21   
22    import java.util.ArrayList;
23    import java.util.Collections;
24    import java.util.List;
25   
26    import org.apache.commons.lang3.ObjectUtils;
27    import org.apache.commons.lang3.StringUtils;
28    import org.xwiki.extension.ExtensionId;
29    import org.xwiki.extension.distribution.internal.DistributionManager.DistributionState;
30    import org.xwiki.extension.distribution.internal.job.step.DistributionStep;
31    import org.xwiki.job.DefaultJobStatus;
32    import org.xwiki.job.event.status.JobStatus;
33    import org.xwiki.logging.LoggerManager;
34    import org.xwiki.observation.ObservationManager;
35   
36    /**
37    * @version $Id: 7bfcdc84603eede09dfc0e066c1068eb53b7e7e0 $
38    * @since 4.2M3
39    */
 
40    public class DistributionJobStatus<R extends DistributionRequest> extends DefaultJobStatus<DistributionRequest>
41    {
42    /**
43    * Serialization identifier.
44    */
45    private static final long serialVersionUID = 2L;
46   
47    /**
48    * Note that this field should not be renamed since it's expected by job status parser.
49    */
50    private ExtensionId previousDistributionExtension;
51   
52    /**
53    * Note that this field should not be renamed since it's expected by job status parser.
54    */
55    private ExtensionId previousDistributionExtensionUi;
56   
57    /**
58    * Note that this field should not be renamed since it's expected by job status parser.
59    */
60    private ExtensionId distributionExtension;
61   
62    /**
63    * Note that this field should not be renamed since it's expected by job status parser.
64    */
65    private ExtensionId distributionExtensionUi;
66   
67    private List<DistributionStep> stepList;
68   
69    private int currentStateIndex;
70   
 
71  2 toggle public DistributionJobStatus(JobStatus status, ObservationManager observationManager, LoggerManager loggerManager)
72    {
73  2 super(ObjectUtils.cloneIfPossible((R) status.getRequest()), null, observationManager, loggerManager);
74   
75  2 if (status instanceof DistributionJobStatus) {
76  2 DistributionJobStatus<R> distributionJobStatus = (DistributionJobStatus<R>) status;
77   
78  2 this.previousDistributionExtension = distributionJobStatus.previousDistributionExtension;
79  2 this.previousDistributionExtensionUi = distributionJobStatus.previousDistributionExtensionUi;
80  2 this.distributionExtension = distributionJobStatus.distributionExtension;
81  2 this.distributionExtensionUi = distributionJobStatus.distributionExtensionUi;
82  2 this.stepList =
83  2 distributionJobStatus.stepList != null
84    ? new ArrayList<DistributionStep>(distributionJobStatus.stepList)
85    : new ArrayList<DistributionStep>();
86    }
87    }
88   
 
89  3 toggle public DistributionJobStatus(R request, ObservationManager observationManager, LoggerManager loggerManager,
90    List<DistributionStep> steps)
91    {
92  3 super(request, null, observationManager, loggerManager);
93   
94  3 this.stepList = steps;
95    }
96   
 
97  11 toggle public List<DistributionStep> getSteps()
98    {
99  11 return this.stepList != null ? this.stepList : Collections.<DistributionStep> emptyList();
100    }
101   
 
102  8 toggle public DistributionStep getStep(String stepId)
103    {
104  8 for (DistributionStep step : getSteps()) {
105  20 if (StringUtils.equals(step.getId(), stepId)) {
106  8 return step;
107    }
108    }
109   
110  0 return null;
111    }
112   
 
113  0 toggle public int getCurrentStateIndex()
114    {
115  0 return this.currentStateIndex;
116    }
117   
 
118  0 toggle public DistributionStep getCurrentStep()
119    {
120  0 return getCurrentStateIndex() < getSteps().size() ? getSteps().get(getCurrentStateIndex()) : null;
121    }
122   
 
123  12 toggle public void setCurrentStateIndex(int currentStateIndex)
124    {
125  12 this.currentStateIndex = currentStateIndex;
126    }
127   
128    // Distribution informations
129   
 
130  0 toggle public ExtensionId getPreviousDistributionExtension()
131    {
132  0 return this.previousDistributionExtension;
133    }
134   
 
135  2 toggle public void setPreviousDistributionExtension(ExtensionId previousDistributionExtension)
136    {
137  2 this.previousDistributionExtension = previousDistributionExtension;
138    }
139   
 
140  0 toggle public ExtensionId getPreviousDistributionExtensionUI()
141    {
142  0 return this.previousDistributionExtensionUi;
143    }
144   
 
145  2 toggle public void setPreviousDistributionExtensionUI(ExtensionId previousDistributionExtensionUI)
146    {
147  2 this.previousDistributionExtensionUi = previousDistributionExtensionUI;
148    }
149   
 
150  22 toggle public ExtensionId getDistributionExtension()
151    {
152  22 return this.distributionExtension;
153    }
154   
 
155  3 toggle public void setDistributionExtension(ExtensionId distributionExtension)
156    {
157  3 this.distributionExtension = distributionExtension;
158    }
159   
 
160  3 toggle public ExtensionId getDistributionExtensionUI()
161    {
162  3 return this.distributionExtensionUi;
163    }
164   
 
165  3 toggle public void setDistributionExtensionUI(ExtensionId distributionExtensionUI)
166    {
167  3 this.distributionExtensionUi = distributionExtensionUI;
168    }
169   
 
170  4 toggle public static DistributionState getDistributionState(ExtensionId previousExtensionId,
171    ExtensionId distributionExtensionId)
172    {
173  4 DistributionState distributionState;
174   
175  4 if (distributionExtensionId != null) {
176  4 if (previousExtensionId == null) {
177  4 distributionState = DistributionState.NEW;
178    } else {
179  0 if (previousExtensionId.equals(distributionExtensionId)) {
180  0 distributionState = DistributionState.SAME;
181  0 } else if (!distributionExtensionId.getId().equals(previousExtensionId.getId())) {
182  0 distributionState = DistributionState.DIFFERENT;
183    } else {
184  0 int diff = distributionExtensionId.getVersion().compareTo(previousExtensionId.getVersion());
185  0 if (diff > 0) {
186  0 distributionState = DistributionState.UPGRADE;
187    } else {
188  0 distributionState = DistributionState.DOWNGRADE;
189    }
190    }
191    }
192    } else {
193  0 distributionState = DistributionState.NONE;
194    }
195   
196  4 return distributionState;
197    }
198   
 
199  0 toggle public DistributionState getDistributionState()
200    {
201  0 return getDistributionState(getPreviousDistributionExtension(), getDistributionExtension());
202    }
203    }