Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Merge pull request #139 from zanata/rhbz998298
Browse files Browse the repository at this point in the history
fix for wrong remaining hours shown in statistic: https://bugzilla.redhat.com/show_bug.cgi?id=998298
  • Loading branch information
carlosmunoz committed Aug 22, 2013
2 parents 79e142d + d2fb363 commit ef59f9d
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 95 deletions.
112 changes: 33 additions & 79 deletions zanata-war/src/main/java/org/zanata/action/ViewAllStatusAction.java
Expand Up @@ -30,6 +30,9 @@
import java.util.List;
import java.util.Map;

import lombok.Getter;
import lombok.Setter;

import org.apache.commons.lang.StringUtils;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
Expand Down Expand Up @@ -78,55 +81,72 @@ public class ViewAllStatusAction implements Serializable
.appendSeparator(", ").appendMinutes().appendSuffix(" min", " mins");

@Logger
Log log;
private Log log;

@In(required = false, value = JpaIdentityStore.AUTHENTICATED_USER)
HAccount authenticatedAccount;
private HAccount authenticatedAccount;

@In
ZanataIdentity identity;
private ZanataIdentity identity;

@In
ProjectIterationDAO projectIterationDAO;
private ProjectIterationDAO projectIterationDAO;

@In
PersonDAO personDAO;
private PersonDAO personDAO;

@In
LocaleService localeServiceImpl;
private LocaleService localeServiceImpl;

@In
CopyTransService copyTransServiceImpl;
private CopyTransService copyTransServiceImpl;

@In
VersionGroupService versionGroupServiceImpl;
private VersionGroupService versionGroupServiceImpl;

@In
StatisticsResource statisticsServiceImpl;
private StatisticsResource statisticsServiceImpl;

@In
CopyTransManager copyTransManager;
private CopyTransManager copyTransManager;

@Setter
@Getter
private String iterationSlug;

@Setter
@Getter
private String projectSlug;

@Setter
@Getter
private String searchTerm;

@Setter
@Getter
private StatUnit statsOption = WORD;

private HProjectIteration projectIteration;

private List<HIterationGroup> searchResults;

private StatUnit statsOption = WORD;

private Map<LocaleId, Status> statsMap = new HashMap<LocaleId, Status>();

public static class Status implements Comparable<Status>, Serializable
{
private static final long serialVersionUID = 1L;

@Getter
private String locale;

@Getter
private String nativeName;

@Setter
@Getter
private TranslationStatistics stats;

@Getter
private boolean userInLanguageTeam;

public Status(String locale, String nativeName, TranslationStatistics stats, boolean userInLanguageTeam)
Expand All @@ -137,31 +157,6 @@ public Status(String locale, String nativeName, TranslationStatistics stats, boo
this.userInLanguageTeam = userInLanguageTeam;
}

public String getLocale()
{
return locale;
}

public String getNativeName()
{
return nativeName;
}

public TranslationStatistics getStats()
{
return stats;
}

public void setStats(TranslationStatistics stats)
{
this.stats = stats;
}

public boolean isUserInLanguageTeam()
{
return userInLanguageTeam;
}

@Override
public int compareTo(Status o)
{
Expand All @@ -174,26 +169,6 @@ public int compareTo(Status o)
}
}

public void setProjectSlug(String slug)
{
this.projectSlug = slug;
}

public String getProjectSlug()
{
return this.projectSlug;
}

public void setIterationSlug(String slug)
{
this.iterationSlug = slug;
}

public String getIterationSlug()
{
return this.iterationSlug;
}

public void validateIteration()
{
if (this.getProjectIteration() == null)
Expand Down Expand Up @@ -245,7 +220,6 @@ public void refreshStatistic()
{
stats = new TranslationStatistics(statsOption);
stats.setUntranslated(total);
// stats.setTotal(total);
}

if (statsMap.containsKey(locale.getLocaleId()))
Expand Down Expand Up @@ -511,16 +485,6 @@ public List<HIterationGroup> getSearchResults()
return searchResults;
}

public String getSearchTerm()
{
return searchTerm;
}

public void setSearchTerm(String searchTerm)
{
this.searchTerm = searchTerm;
}

public void searchGroup()
{
searchResults = versionGroupServiceImpl.searchLikeSlugAndName(searchTerm);
Expand All @@ -530,17 +494,7 @@ public boolean isGroupInVersion(String groupSlug)
{
return versionGroupServiceImpl.isGroupInVersion(groupSlug, getProjectIteration().getId());
}

public StatUnit getStatsOption()
{
return statsOption;
}

public void setStatsOption(StatUnit statsOption)
{
this.statsOption = statsOption;
}


public boolean isPoProject()
{
ProjectType type = getProjectIteration().getProjectType();
Expand Down
Expand Up @@ -84,6 +84,8 @@ public class StatisticsServiceImpl implements StatisticsResource
@In
private TranslationStateCache translationStateCacheImpl;

// TODO Need to refactor this method to get Message statistic by default.
// This is to be consistance with UI which uses message stats, and for calculating remaining hours.
@Override
public ContainerTranslationStatistics getStatistics(String projectSlug, String iterationSlug, boolean includeDetails, boolean includeWordStats, String[] locales)
{
Expand Down Expand Up @@ -117,11 +119,8 @@ public ContainerTranslationStatistics getStatistics(String projectSlug, String i
}

Map<String, TransUnitCount> transUnitIterationStats = projectIterationDAO.getAllStatisticsForContainer(iteration.getId());
Map<String, TransUnitWords> wordIterationStats = null;
if (includeWordStats)
{
wordIterationStats = projectIterationDAO.getAllWordStatsStatistics(iteration.getId());
}
Map<String, TransUnitWords> wordIterationStats = projectIterationDAO.getAllWordStatsStatistics(iteration.getId());

ContainerTranslationStatistics iterationStats = new ContainerTranslationStatistics();
iterationStats.setId(iterationSlug);
iterationStats.addRef(new Link(URI.create(zPathService.generatePathForProjectIteration(iteration)), "statSource", "PROJ_ITER"));
Expand Down Expand Up @@ -152,19 +151,19 @@ public ContainerTranslationStatistics getStatistics(String projectSlug, String i
}
}

TransUnitWords wordCount = wordIterationStats.get(locId.getId());
if (wordCount == null)
{
wordCount = new TransUnitWords(0, 0, (int) iterationTotalWords);
}

TranslationStatistics transUnitStats = getMessageStats(count, locId, lastModifiedDate, lastModifiedBy);
transUnitStats.setRemainingHours(getRemainingHours(count.get(ContentState.NeedReview), count.get(ContentState.New)));
transUnitStats.setRemainingHours(getRemainingHours(wordCount.get(ContentState.NeedReview), wordCount.get(ContentState.New)));
iterationStats.addStats(transUnitStats);

// word level stats
if (includeWordStats)
{
TransUnitWords wordCount = wordIterationStats.get(locId.getId());
if (wordCount == null)
{
wordCount = new TransUnitWords(0, 0, (int) iterationTotalWords);
}

TranslationStatistics wordsStats = getWordsStats(wordCount, locId, lastModifiedDate, lastModifiedBy);
wordsStats.setRemainingHours(getRemainingHours(wordCount.get(ContentState.NeedReview), wordCount.get(ContentState.New)));
iterationStats.addStats(wordsStats);
Expand Down
Expand Up @@ -482,7 +482,7 @@ public interface WebTransMessages extends Messages
@DefaultMessage("Words")
String byWords();

@DefaultMessage("Message")
@DefaultMessage("Messages")
String byMessage();

@DefaultMessage("Refresh current page")
Expand Down
2 changes: 1 addition & 1 deletion zanata-war/src/main/resources/messages.properties
Expand Up @@ -267,7 +267,7 @@ jsf.Statistics=Statistics
! statistics based on words in source
jsf.ByWords=By Words
! statistics based on entier message strings
jsf.Message=By Message
jsf.Message=By Messages
! used in tooltip for statistics bar
jsf.stats.Total=Total:
! used in tooltip for statistics bar
Expand Down
Expand Up @@ -96,7 +96,7 @@ public class DocumentListPresenterTest
private ArgumentCaptor<HistoryToken> capturedHistoryToken;

private static final String TEST_BY_WORDS_MESSAGE = "By Words";
private static final String TEST_BY_MESSAGE_MESSAGE = "By Message";
private static final String TEST_BY_MESSAGE_MESSAGE = "By Messages";

private WorkspaceId workspaceId;

Expand Down

0 comments on commit ef59f9d

Please sign in to comment.