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

Commit

Permalink
Merge branch 'master' into rhbz844819
Browse files Browse the repository at this point in the history
Conflicts:
	zanata-war/src/main/webapp/iteration/view.xhtml
  • Loading branch information
Alex Eng committed Aug 9, 2012
2 parents 03f7c23 + 5b623d5 commit 08acb4f
Show file tree
Hide file tree
Showing 15 changed files with 900 additions and 488 deletions.
2 changes: 2 additions & 0 deletions zanata-war/etc/enunciate/enunciate.xml
Expand Up @@ -5,6 +5,8 @@
</namespaces>
<api-classes>
<include pattern="org.zanata.rest.service.*"/>
<!-- New Business / REST service hybrids -->
<include pattern="org.zanata.service.impl.*"/>
</api-classes>
<modules>
<docs docsDir="rest-api-docs" title="Zanata REST API"
Expand Down
Expand Up @@ -22,6 +22,7 @@

import java.io.InputStream;
import java.util.List;
import javax.faces.context.FacesContext;

import org.hibernate.validator.InvalidStateException;
import org.jboss.seam.ScopeType;
Expand All @@ -34,8 +35,6 @@
import org.zanata.common.EntityStatus;
import org.zanata.common.LocaleId;
import org.zanata.common.MergeType;
import org.zanata.common.TransUnitWords;
import org.zanata.common.TranslationStats;
import org.zanata.dao.DocumentDAO;
import org.zanata.dao.LocaleDAO;
import org.zanata.dao.ProjectIterationDAO;
Expand All @@ -47,17 +46,19 @@
import org.zanata.rest.dto.extensions.ExtensionType;
import org.zanata.rest.dto.resource.Resource;
import org.zanata.rest.dto.resource.TranslationsResource;
import org.zanata.rest.dto.stats.ContainerTranslationStatistics;
import org.zanata.rest.dto.stats.TranslationStatistics;
import org.zanata.rest.service.StatisticsResource;
import org.zanata.security.ZanataIdentity;
import org.zanata.service.DocumentService;
import org.zanata.service.LocaleService;
import org.zanata.service.TranslationFileService;
import org.zanata.service.TranslationService;

import javax.faces.context.FacesContext;

import lombok.Getter;
import lombok.Setter;

import static org.zanata.rest.dto.stats.TranslationStatistics.StatUnit.WORD;

@Name("projectIterationFilesAction")
@Scope(ScopeType.PAGE)
public class ProjectIterationFilesAction
Expand Down Expand Up @@ -90,6 +91,9 @@ public class ProjectIterationFilesAction
@In
private DocumentService documentServiceImpl;

@In
private StatisticsResource statisticsServiceImpl;

private List<HDocument> iterationDocuments;

private String documentNameFilter;
Expand Down Expand Up @@ -125,10 +129,11 @@ public boolean filterDocumentByName( Object docObject )
}
}

public TransUnitWords getTransUnitWordsForDocument(HDocument doc)
public TranslationStatistics getTransUnitWordsForDocument(HDocument doc)
{
TranslationStats documentStats = this.documentDAO.getStatistics(doc.getId(), new LocaleId(this.localeId));
return documentStats.getWordCount();
ContainerTranslationStatistics docStatistics =
this.statisticsServiceImpl.getStatistics(this.projectSlug, this.iterationSlug, doc.getDocId(), true, new String[]{this.localeId});
return docStatistics.getStats( this.localeId, WORD );
}

@Restrict("#{projectIterationFilesAction.fileUploadAllowed}")
Expand Down
73 changes: 37 additions & 36 deletions zanata-war/src/main/java/org/zanata/action/ViewAllStatusAction.java
Expand Up @@ -38,7 +38,8 @@
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;
import org.zanata.common.ContentState;
import org.zanata.annotation.CachedMethodResult;
import org.zanata.annotation.CachedMethods;
import org.zanata.common.EntityStatus;
import org.zanata.common.TransUnitWords;
import org.zanata.dao.ProjectIterationDAO;
Expand All @@ -48,14 +49,20 @@
import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
import org.zanata.process.CopyTransProcessHandle;
import org.zanata.rest.dto.stats.ContainerTranslationStatistics;
import org.zanata.rest.dto.stats.TranslationStatistics;
import org.zanata.rest.service.StatisticsResource;
import org.zanata.seam.scope.FlashScopeBean;
import org.zanata.security.ZanataIdentity;
import org.zanata.service.CopyTransService;
import org.zanata.service.LocaleService;
import org.zanata.service.VersionGroupService;

import static org.zanata.rest.dto.stats.TranslationStatistics.StatUnit.WORD;

@Name("viewAllStatusAction")
@Scope(ScopeType.PAGE)
@CachedMethods
public class ViewAllStatusAction implements Serializable
{
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -90,7 +97,10 @@ public class ViewAllStatusAction implements Serializable
Map<String, String> messages;

@In
private VersionGroupService versionGroupServiceImpl;
VersionGroupService versionGroupServiceImpl;

@In
StatisticsResource statisticsServiceImpl;

@In
CopyTransManager copyTransManager;
Expand All @@ -104,8 +114,6 @@ public class ViewAllStatusAction implements Serializable

private String searchTerm;

private boolean showAllLocales = false;

private HProjectIteration projectIteration;

private List<HIterationGroup> searchResults;
Expand All @@ -114,15 +122,15 @@ public static class Status implements Comparable<Status>
{
private String locale;
private String nativeName;
private TransUnitWords words;
private TranslationStatistics wordStats;
private int per;
private boolean userInLanguageTeam;

public Status(String locale, String nativeName, TransUnitWords words, int per, boolean userInLanguageTeam)
public Status(String locale, String nativeName, TranslationStatistics wordStats, int per, boolean userInLanguageTeam)
{
this.locale = locale;
this.nativeName = nativeName;
this.words = words;
this.wordStats = wordStats;
this.per = per;
this.userInLanguageTeam = userInLanguageTeam;
}
Expand All @@ -137,9 +145,9 @@ public String getNativeName()
return nativeName;
}

public TransUnitWords getWords()
public TranslationStatistics getWordStats()
{
return words;
return wordStats;
}

public double getPer()
Expand Down Expand Up @@ -188,21 +196,32 @@ public void validateIteration()
}
}

@CachedMethodResult
public List<Status> getAllStatus()
{
List<Status> result = new ArrayList<Status>();
HProjectIteration iteration = projectIterationDAO.getBySlug(this.projectSlug, this.iterationSlug);
Map<String, TransUnitWords> stats = projectIterationDAO.getAllWordStatsStatistics(iteration.getId());

List<HLocale> locale = this.getDisplayLocales();
String[] localeIds = new String[locale.size()];
for (int i = 0, localeSize = locale.size(); i < localeSize; i++)
{
HLocale l = locale.get(i);
localeIds[i] = l.getLocaleId().getId();
}

ContainerTranslationStatistics iterationStats =
statisticsServiceImpl.getStatistics(this.projectSlug, this.iterationSlug, false, true, localeIds);

Long total = projectIterationDAO.getTotalWordCountForIteration(iteration.getId());
for (HLocale var : locale)
{
TransUnitWords words = stats.get(var.getLocaleId().getId());
if (words == null)
TranslationStatistics wordStats = iterationStats.getStats(var.getLocaleId().getId(), WORD);
if (wordStats == null)
{
words = new TransUnitWords();
words.set(ContentState.New, total.intValue());

wordStats = new TranslationStatistics();
wordStats.setUntranslated( total );
wordStats.setTotal( total );
}
int per;
if (total.intValue() == 0)
Expand All @@ -211,29 +230,18 @@ public List<Status> getAllStatus()
}
else
{
per = (int) Math.ceil(100 * words.getApproved() / words.getTotal());
per = (int) Math.ceil(100 * wordStats.getTranslated() / wordStats.getTotal());

}
boolean isMember = authenticatedAccount != null ? authenticatedAccount.getPerson().isMember(var) : false;

Status op = new Status(var.getLocaleId().getId(), var.retrieveNativeName(), words, per, isMember);
Status op = new Status(var.getLocaleId().getId(), var.retrieveNativeName(), wordStats, per, isMember);
result.add(op);
}
Collections.sort(result);
return result;
}


public boolean getShowAllLocales()
{
return showAllLocales;
}

public void setShowAllLocales(boolean showAllLocales)
{
this.showAllLocales = showAllLocales;
}

public HProjectIteration getProjectIteration()
{
if (this.projectIteration == null)
Expand Down Expand Up @@ -402,14 +410,7 @@ private String formatTimePeriod( long durationInMillis )

private List<HLocale> getDisplayLocales()
{
if (this.showAllLocales || authenticatedAccount == null)
{
return localeServiceImpl.getSupportedLangugeByProjectIteration(this.projectSlug, this.iterationSlug);
}
else
{
return localeServiceImpl.getTranslation(projectSlug, iterationSlug, authenticatedAccount.getUsername());
}
return localeServiceImpl.getSupportedLangugeByProjectIteration(this.projectSlug, this.iterationSlug);
}

public List<HIterationGroup> getSearchResults()
Expand Down
Expand Up @@ -21,18 +21,18 @@
package org.zanata.service.impl;

import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.framework.EntityNotFoundException;
import org.zanata.common.ContentState;
import org.zanata.common.LocaleId;
import org.zanata.common.TransUnitCount;
Expand All @@ -42,11 +42,11 @@
import org.zanata.dao.ProjectIterationDAO;
import org.zanata.model.HDocument;
import org.zanata.model.HProjectIteration;
import org.zanata.rest.NoSuchEntityException;
import org.zanata.rest.dto.Link;
import org.zanata.rest.dto.stats.ContainerTranslationStatistics;
import org.zanata.rest.dto.stats.TranslationStatistics;
import org.zanata.rest.service.StatisticsResource;
import org.zanata.rest.service.URIHelper;
import org.zanata.rest.service.ZPathService;

import lombok.extern.slf4j.Slf4j;
Expand All @@ -58,6 +58,7 @@
* @author Carlos Munoz <a href="mailto:camunoz@redhat.com">camunoz@redhat.com</a>
*/
@Path("/stats")
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Name("statisticsServiceImpl")
@Scope(ScopeType.STATELESS)
@AutoCreate
Expand All @@ -75,15 +76,6 @@ public class StatisticsServiceImpl implements StatisticsResource
private ZPathService zPathService;


/**
*
* @param projectSlug
* @param iterationSlug
* @param includeDetails
* @param includeWordStats
* @param locales Locale statistics to be fetched. If this is empty, all locale statistics will be returned.
* @return
*/
@Override
public ContainerTranslationStatistics
getStatistics(String projectSlug, String iterationSlug, boolean includeDetails, boolean includeWordStats, String[] locales)
Expand All @@ -99,7 +91,7 @@ public class StatisticsServiceImpl implements StatisticsResource

if( iteration == null )
{
throw new EntityNotFoundException(projectSlug + "/" + iterationSlug, HProjectIteration.class);
throw new NoSuchEntityException(projectSlug + "/" + iterationSlug);
}

Map<String, TransUnitCount> transUnitIterationStats = projectIterationDAO.getAllStatisticsForContainer(iteration.getId());
Expand Down Expand Up @@ -176,7 +168,7 @@ public class StatisticsServiceImpl implements StatisticsResource

if( document == null )
{
throw new EntityNotFoundException(projectSlug + "/" + iterationSlug + "/" + docId, HDocument.class);
throw new NoSuchEntityException(projectSlug + "/" + iterationSlug + "/" + docId);
}

Map<LocaleId, TranslationStats> statsMap = documentDAO.getStatistics(document.getId(), localeIds);
Expand Down
Expand Up @@ -146,15 +146,15 @@ public DocumentListPresenter(final Display display, EventBus eventBus, UserWorks
this.history = history;
this.windowLocation = windowLocation;

dataProvider = display.getDataProvider();

display.renderTable(selectionModel);
nodes = new HashMap<DocumentId, DocumentNode>();
}

@Override
protected void onBind()
{
dataProvider = display.getDataProvider();
display.renderTable(selectionModel);

selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler()
{
public void onSelectionChange(SelectionChangeEvent event)
Expand Down
Expand Up @@ -52,8 +52,11 @@ public TranslationWorkspaceImpl(WorkspaceContext workspaceContext)
if (workspaceContext == null)
throw new IllegalArgumentException("workspaceContext is null");
this.workspaceContext = workspaceContext;
this.domain = DomainFactory.getDomain(workspaceContext.getWorkspaceId().toString());
this.eventExecutorService = EventExecutorServiceFactory.getInstance().getEventExecutorService(workspaceContext.getWorkspaceId().toString());
String workspaceId = workspaceContext.getWorkspaceId().toString();
this.domain = DomainFactory.getDomain(workspaceId);
EventExecutorServiceFactory factory = EventExecutorServiceFactory.getInstance();
this.eventExecutorService = factory.getEventExecutorService(workspaceId);

UserManager userManager = UserManagerFactory.getInstance().getUserManager();
userManager.getUserActivityScheduler().addTimeoutListener(new UserTimeoutListener()
{
Expand Down

0 comments on commit 08acb4f

Please sign in to comment.