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

Commit

Permalink
Rename and refactor implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Sep 19, 2013
1 parent e860f85 commit 0ed29a3
Show file tree
Hide file tree
Showing 17 changed files with 324 additions and 349 deletions.
Expand Up @@ -44,11 +44,18 @@ public interface TranslationService
*
* @param localeId
* @param translationRequests
* @param runValidationCheck - Should be true by default
* @return information about each translation change
*/
List<TranslationResult> translate(LocaleId localeId, List<TransUnitUpdateRequest> translationRequests, boolean skipValidationCheck);
List<TranslationResult> translate(LocaleId localeId, List<TransUnitUpdateRequest> translationRequests);

/**
* Updates multiple text flows within a project-iteration without running validation check.
*
* @param localeId
* @param translationRequests
* @return information about each translation change
*/
List<TranslationResult> translateWithoutValidating(LocaleId localeId, List<TransUnitUpdateRequest> translationRequests);

/**
* Attempts to revert a list of updates by adding a new translation that is
Expand Down
Expand Up @@ -20,70 +20,36 @@
*/
package org.zanata.service.impl;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.annotation.Nonnull;
import javax.persistence.EntityManager;

import lombok.extern.slf4j.Slf4j;

import org.apache.commons.lang.StringUtils;
import org.hibernate.HibernateException;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.TransactionPropagationType;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.core.Events;
import org.jboss.seam.security.management.JpaIdentityStore;
import org.jboss.seam.util.Work;
import org.zanata.async.AsyncTaskHandle;
import org.zanata.async.AsyncUtils;
import org.zanata.common.ContentState;
import org.zanata.common.LocaleId;
import org.zanata.common.MergeType;
import org.zanata.common.util.ContentStateUtil;
import org.zanata.dao.DocumentDAO;
import org.zanata.dao.PersonDAO;
import org.zanata.dao.ProjectIterationDAO;
import org.zanata.dao.TextFlowDAO;
import org.zanata.dao.TextFlowTargetDAO;
import org.zanata.events.DocumentUploadedEvent;
import org.zanata.events.TextFlowTargetStateEvent;
import org.zanata.exception.ZanataServiceException;
import org.zanata.lock.Lock;
import org.zanata.model.HAccount;
import org.zanata.model.HDocument;
import org.zanata.model.HLocale;
import org.zanata.model.HPerson;
import org.zanata.model.HProjectIteration;
import org.zanata.model.HSimpleComment;
import org.zanata.model.HTextFlow;
import org.zanata.model.HTextFlowTarget;
import org.zanata.model.HTextFlowTargetHistory;
import org.zanata.rest.dto.resource.TextFlowTarget;
import org.zanata.rest.dto.resource.TranslationsResource;
import org.zanata.rest.service.ResourceUtils;
import org.zanata.security.ZanataIdentity;
import org.zanata.service.LocaleService;
import org.zanata.service.LockManagerService;
import org.zanata.service.TranslationMergeService;
import org.zanata.service.TranslationService;
import org.zanata.service.ValidationService;
import org.zanata.webtrans.shared.model.TransUnitId;
import org.zanata.webtrans.shared.model.TransUnitUpdateInfo;
import org.zanata.webtrans.shared.model.TransUnitUpdateRequest;

import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.zanata.webtrans.shared.model.ValidationAction;
import java.util.*;

import javax.annotation.*;
import javax.persistence.*;

import lombok.extern.slf4j.*;

import org.apache.commons.lang.*;
import org.hibernate.*;
import org.jboss.seam.*;
import org.jboss.seam.annotations.*;
import org.jboss.seam.core.*;
import org.jboss.seam.security.management.*;
import org.jboss.seam.util.*;
import org.zanata.async.*;
import org.zanata.common.*;
import org.zanata.common.util.*;
import org.zanata.dao.*;
import org.zanata.events.*;
import org.zanata.exception.*;
import org.zanata.lock.*;
import org.zanata.model.*;
import org.zanata.rest.dto.resource.*;
import org.zanata.rest.service.*;
import org.zanata.security.*;
import org.zanata.service.*;
import org.zanata.webtrans.shared.model.*;

import com.google.common.base.*;
import com.google.common.collect.*;

@Name("translationServiceImpl")
@Scope(ScopeType.STATELESS)
Expand Down Expand Up @@ -132,8 +98,18 @@ public class TranslationServiceImpl implements TranslationService
private TranslationMergeServiceFactory translationMergeServiceFactory;

@Override
public List<TranslationResult> translate(LocaleId localeId, List<TransUnitUpdateRequest> translationRequests,
boolean runValidationCheck)
public List<TranslationResult> translate(LocaleId localeId, List<TransUnitUpdateRequest> translationRequests)
{
return translate(localeId, translationRequests, true);
}

@Override
public List<TranslationResult> translateWithoutValidating(LocaleId localeId, List<TransUnitUpdateRequest> translationRequests)
{
return translate(localeId, translationRequests, false);
}

private List<TranslationResult> translate(LocaleId localeId, List<TransUnitUpdateRequest> translationRequests, boolean runValidation)
{
List<TranslationResult> results = new ArrayList<TranslationResult>();

Expand All @@ -159,15 +135,18 @@ public List<TranslationResult> translate(LocaleId localeId, List<TransUnitUpdate

TranslationResultImpl result = new TranslationResultImpl();

String validationMessage = validateTranslations(request.getNewContentState(), projectIteration, request
.getTransUnitId().toString(), hTextFlow.getContents(), request.getNewContents());

if (runValidationCheck && !StringUtils.isEmpty(validationMessage))
if (runValidation)
{
log.warn(validationMessage);
result.isSuccess = false;
result.errorMessage = validationMessage;
continue;
String validationMessage = validateTranslations(request.getNewContentState(), projectIteration, request
.getTransUnitId().toString(), hTextFlow.getContents(), request.getNewContents());

if (!StringUtils.isEmpty(validationMessage))
{
log.warn(validationMessage);
result.isSuccess = false;
result.errorMessage = validationMessage;
continue;
}
}

HTextFlowTarget hTextFlowTarget = textFlowTargetDAO.getOrCreateTarget(hTextFlow, hLocale);
Expand Down Expand Up @@ -485,13 +464,13 @@ public List<String> translateAllInDoc(String projectSlug, String iterationSlug,
* @return error messages
*/
private String validateTranslations(ContentState newState, HProjectIteration projectVersion, String targetId,
List<String> sources, List<String> translations)
List<String> sources, List<String> translations)
{
String message = null;
if (newState.isTranslated())
{
List<String> validationMessages = validationServiceImpl.validateWithServerRules(
projectVersion, sources, translations, ValidationAction.State.Error);
projectVersion, sources, translations, ValidationAction.State.Error);

if (!validationMessages.isEmpty())
{
Expand Down Expand Up @@ -612,16 +591,16 @@ protected Boolean work() throws Exception
else
{
String validationMessage = validateTranslations(incomingTarget.getState(),
hProjectIteration, incomingTarget.getResId(), textFlow.getContents(),
incomingTarget.getContents());
hProjectIteration, incomingTarget.getResId(), textFlow.getContents(),
incomingTarget.getContents());

if (!StringUtils.isEmpty(validationMessage))
{
warnings.add(validationMessage);
log.warn(validationMessage);
continue;
}

int nPlurals = getNumPlurals(hLocale, textFlow);
HTextFlowTarget hTarget = textFlowTargetDAO.getTextFlowTarget(textFlow, hLocale);

Expand Down Expand Up @@ -859,7 +838,7 @@ public List<TranslationResult> revertTranslations(LocaleId localeId, List<TransU
}
}
}
results.addAll(translate(localeId, updateRequests, false));
results.addAll(translate(localeId, updateRequests));
return results;
}

Expand Down
Expand Up @@ -13,13 +13,13 @@ public class WorkspaceContextUpdateEvent extends GwtEvent<WorkspaceContextUpdate
{
private final boolean isProjectActive;
private final ProjectType projectType;
private final Map<ValidationId, State> validationsState;
private final Map<ValidationId, State> validationStates;

public WorkspaceContextUpdateEvent(HasWorkspaceContextUpdateData data)
{
this.isProjectActive = data.isProjectActive();
this.projectType = data.getProjectType();
this.validationsState = data.getValidationsState();
this.validationStates = data.getValidationsState();
}

/**
Expand Down Expand Up @@ -63,8 +63,8 @@ public ProjectType getProjectType()
return projectType;
}

public Map<ValidationId, State> getValidationsState()
public Map<ValidationId, State> getValidationStates()
{
return validationsState;
return validationStates;
}
}
Expand Up @@ -133,7 +133,7 @@ public void onValueChange(ValueChangeEvent<Boolean> event)
@Override
public void onWorkspaceContextUpdated(WorkspaceContextUpdateEvent event)
{
validationService.setValidationRules(event.getValidationsState());
validationService.setValidationRules(event.getValidationStates());

initDisplay();
}
Expand Down
Expand Up @@ -88,7 +88,7 @@ protected UpdateTransUnitResult doTranslation(LocaleId localeId, TranslationWork
TransUnitUpdated.UpdateType updateType)
{
UpdateTransUnitResult result = new UpdateTransUnitResult();
List<TranslationResult> translationResults = translationServiceImpl.translate(localeId, updateRequests, true);
List<TranslationResult> translationResults = translationServiceImpl.translateWithoutValidating(localeId, updateRequests);
for (TranslationResult translationResult : translationResults)
{
HTextFlowTarget newTarget = translationResult.getTranslatedTextFlowTarget();
Expand Down
Expand Up @@ -57,7 +57,7 @@ public abstract class AbstractValidationAction implements ValidationAction

private ValidationDisplayRules displayRules;

private ArrayList<ValidationAction> exclusiveValidations = new ArrayList<ValidationAction>();
private ArrayList<ValidationAction> exclusiveValidations = Lists.newArrayList();

private ValidationMessages validationMessages;

Expand Down
Expand Up @@ -3,25 +3,14 @@
*/
package org.zanata.webtrans.shared.validation;

import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import org.zanata.webtrans.client.resources.ValidationMessages;
import org.zanata.webtrans.shared.model.ValidationAction;
import org.zanata.webtrans.shared.model.ValidationAction.State;
import org.zanata.webtrans.shared.model.ValidationId;
import org.zanata.webtrans.shared.validation.action.HtmlXmlTagValidation;
import org.zanata.webtrans.shared.validation.action.JavaVariablesValidation;
import org.zanata.webtrans.shared.validation.action.NewlineLeadTrailValidation;
import org.zanata.webtrans.shared.validation.action.PrintfVariablesValidation;
import org.zanata.webtrans.shared.validation.action.PrintfXSIExtensionValidation;
import org.zanata.webtrans.shared.validation.action.TabValidation;
import org.zanata.webtrans.shared.validation.action.XmlEntityValidation;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.*;

import org.zanata.webtrans.client.resources.*;
import org.zanata.webtrans.shared.model.*;
import org.zanata.webtrans.shared.model.ValidationAction.*;
import org.zanata.webtrans.shared.validation.action.*;

import com.google.common.collect.*;

/**
* Validation Factory - provides list of available validation rules to run on server or client.
Expand All @@ -32,7 +21,7 @@ public final class ValidationFactory
{
private final ValidationMessages validationMessages;

private final TreeMap<ValidationId, ValidationAction> referenceMap;
private final Map<ValidationId, ValidationAction> referenceMap;

public static Comparator<ValidationId> ValidationIdComparator = new Comparator<ValidationId>()
{
Expand Down Expand Up @@ -73,7 +62,7 @@ public ValidationAction getValidationAction(ValidationId id)
return referenceMap.get(id);
}

private TreeMap<ValidationId, ValidationAction> generateActions()
private Map<ValidationId, ValidationAction> generateActions()
{
TreeMap<ValidationId, ValidationAction> validationMap = Maps.newTreeMap();

Expand Down
Expand Up @@ -124,10 +124,6 @@
-->
<component name="zanataJobScheduler" class="org.zanata.job.ZanataJobScheduler"/>

<!-- Mailserver for notification messages -->
<!-- From 2.0, email configuration is on zanata.properties -->
<!-- <mail:mail-session host="localhost" port="25" ssl="false" tls="false"/> -->

<!-- Maximum size of file uploads
If you are using MySQL, don't forget their magic stuff:
http://dev.mysql.com/doc/refman/5.0/en/packet-too-large.html
Expand Down

0 comments on commit 0ed29a3

Please sign in to comment.