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 #211 from zanata/rhbz1006063-message
Browse files Browse the repository at this point in the history
Rhbz1006063 message
  • Loading branch information
Patrick Huang committed Oct 4, 2013
2 parents fc1d84f + 0389728 commit 81fc13c
Show file tree
Hide file tree
Showing 29 changed files with 544 additions and 271 deletions.
Expand Up @@ -20,36 +20,72 @@
*/
package org.zanata.service.impl;

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.*;
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.util.ShortString;
import org.zanata.util.ZanataMessages;
import org.zanata.webtrans.shared.model.TransUnitId;
import org.zanata.webtrans.shared.model.TransUnitUpdateInfo;
import org.zanata.webtrans.shared.model.TransUnitUpdateRequest;
import org.zanata.webtrans.shared.model.ValidationAction;

import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;

@Name("translationServiceImpl")
@Scope(ScopeType.STATELESS)
Expand Down Expand Up @@ -97,6 +133,9 @@ public class TranslationServiceImpl implements TranslationService {
@In
private TranslationMergeServiceFactory translationMergeServiceFactory;

@In
private ZanataMessages zanataMessages;

@Override
public List<TranslationResult> translate(LocaleId localeId,
List<TransUnitUpdateRequest> translationRequests) {
Expand Down Expand Up @@ -488,12 +527,14 @@ private String validateTranslations(ContentState newState,

if (!validationMessages.isEmpty()) {
StringBuilder sb = new StringBuilder();
sb.append("Translation ").append(targetId)
.append(" contains validation error - \n");
for (String validationMessage : validationMessages) {
sb.append(validationMessage).append("\n");
}
message = sb.toString();
message =
zanataMessages.getMessage(
"jsf.TranslationContainsError",
ShortString.shorten(translations.get(0)),
sb.toString());
}
}
return message;
Expand Down
@@ -1,6 +1,9 @@
package org.zanata.webtrans.client.events;

import java.util.Date;

import org.zanata.webtrans.client.ui.InlineLink;

import com.google.gwt.event.shared.GwtEvent;

public class NotificationEvent extends GwtEvent<NotificationEventHandler> {
Expand Down Expand Up @@ -28,26 +31,28 @@ public static enum Severity {

private final Severity severity;
private final String message;
private final String summary;
private final String details;
private boolean displayAsHtml;
private InlineLink inlineLink;
private Date date;

public NotificationEvent(Severity severity, String message) {
this(severity, message, null);
}

public NotificationEvent(Severity severity, String message,
InlineLink inlineLink) {
this(severity, message, message, false, inlineLink);
this(severity, message, null, false, inlineLink);
}

public NotificationEvent(Severity severity, String summary, String message,
public NotificationEvent(Severity severity, String message, String details,
boolean displayAsHtml, InlineLink inlineLink) {
this.severity = severity;
this.message = message;
this.inlineLink = inlineLink;
this.summary = summary;
this.details = details;
this.displayAsHtml = displayAsHtml;
this.date = new Date();
}

public Severity getSeverity() {
Expand All @@ -62,8 +67,8 @@ public InlineLink getInlineLink() {
return inlineLink;
}

public String getSummary() {
return summary;
public String getDetails() {
return details;
}

public boolean isDisplayAsHtml() {
Expand All @@ -79,4 +84,8 @@ protected void dispatch(NotificationEventHandler handler) {
public Type<NotificationEventHandler> getAssociatedType() {
return getType();
}

public Date getDate() {
return date;
}
}
Expand Up @@ -86,6 +86,12 @@ public enum ShortcutContext {
* Used by
* {@link org.zanata.webtrans.client.presenter.TargetContentsPresenter}
*/
ValidationWarningPopup
ValidationWarningPopup,

/**
* Used by
* {@link org.zanata.webtrans.client.ui.NotificationDetailsBox}
*/
NotificationDetailsPopup

}
Expand Up @@ -20,6 +20,11 @@
*/
package org.zanata.webtrans.client.presenter;

import net.customware.gwt.presenter.client.EventBus;
import net.customware.gwt.presenter.client.PresenterRevealedEvent;
import net.customware.gwt.presenter.client.PresenterRevealedHandler;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;

import org.zanata.common.LocaleId;
import org.zanata.rest.dto.stats.ContainerTranslationStatistics;
import org.zanata.rest.dto.stats.TranslationStatistics;
Expand All @@ -32,6 +37,7 @@
import org.zanata.webtrans.client.events.KeyShortcutEventHandler;
import org.zanata.webtrans.client.events.NotificationEvent;
import org.zanata.webtrans.client.events.NotificationEvent.Severity;
import org.zanata.webtrans.client.events.NotificationEventHandler;
import org.zanata.webtrans.client.events.ProjectStatsUpdatedEvent;
import org.zanata.webtrans.client.events.ProjectStatsUpdatedEventHandler;
import org.zanata.webtrans.client.events.RefreshPageEvent;
Expand All @@ -50,21 +56,17 @@
import org.zanata.webtrans.shared.model.DocumentId;
import org.zanata.webtrans.shared.model.DocumentInfo;
import org.zanata.webtrans.shared.model.UserWorkspaceContext;

import com.allen_sauer.gwt.log.client.Log;
import com.google.common.base.Strings;
import com.google.gwt.core.client.GWT;
import com.google.inject.Inject;

import net.customware.gwt.presenter.client.EventBus;
import net.customware.gwt.presenter.client.PresenterRevealedEvent;
import net.customware.gwt.presenter.client.PresenterRevealedHandler;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;

public class AppPresenter extends WidgetPresenter<AppDisplay> implements
ShowSideMenuEventHandler, WorkspaceContextUpdateEventHandler,
DocumentStatsUpdatedEventHandler, PresenterRevealedHandler,
AttentionModeActivationEventHandler, ProjectStatsUpdatedEventHandler,
AppDisplay.Listener {
NotificationEventHandler, AppDisplay.Listener {

private static final String WORKSPACE_TITLE_QUERY_PARAMETER_KEY = "title";

Expand Down Expand Up @@ -142,6 +144,7 @@ protected void onBind() {
AttentionModeActivationEvent.getType(), this));
registerHandler(eventBus.addHandler(ProjectStatsUpdatedEvent.getType(),
this));
registerHandler(eventBus.addHandler(NotificationEvent.getType(), this));

if (selectedDocument == null) {
display.enableTab(MainView.Editor, false);
Expand Down Expand Up @@ -284,6 +287,7 @@ public void showView(MainView viewToShow) {
/**
* Set selected document to the given document, update name and stats to
* match the newly selected document.
*
* @param docId
* id of the document to select
*/
Expand Down Expand Up @@ -401,6 +405,7 @@ public void onPresenterRevealed(PresenterRevealedEvent event) {

/**
* Facilitate unit testing. Will be no-op if in client(GWT compiled) mode.
*
* @param projectStats
* project stats
* @param selectedDocumentStats
Expand Down Expand Up @@ -457,4 +462,12 @@ public void onProjectStatsUpdated(ProjectStatsUpdatedEvent event) {
}
refreshStatsDisplay();
}

@Override
public void onNotification(NotificationEvent event) {
if (event.getSeverity() == Severity.Warning
|| event.getSeverity() == Severity.Error) {
display.showNotification(event);
}
}
}
Expand Up @@ -86,6 +86,8 @@
import net.customware.gwt.presenter.client.EventBus;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;

import javax.servlet.http.HttpServletResponse;

public class DocumentListPresenter extends WidgetPresenter<DocumentListDisplay>
implements DocumentListDisplay.Listener, DocumentSelectionHandler,
UserConfigChangeHandler, TransUnitUpdatedEventHandler,
Expand Down Expand Up @@ -605,13 +607,13 @@ public void cancelFileUpload() {
@Override
public void onFileUploadComplete(SubmitCompleteEvent event) {
display.closeFileUpload();
if (event.getResults().contains("200")) {
if (event.getResults().contains("Warning")) {
if (event.getResults().contains(String.valueOf(HttpServletResponse.SC_OK))) {
if (event.getResults().contains("Warnings")) {
eventBus.fireEvent(new NotificationEvent(Severity.Warning,
"File uploaded.", event.getResults(), true, null));
"File uploaded with warnings", event.getResults(), true, null));
} else {
eventBus.fireEvent(new NotificationEvent(Severity.Info,
"File uploaded.", event.getResults(), true, null));
"File uploaded", event.getResults(), true, null));
}
queryStats();
} else {
Expand Down
@@ -0,0 +1,13 @@
package org.zanata.webtrans.client.presenter;

import org.zanata.webtrans.client.events.NotificationEvent;

/**
* @author Alex Eng <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
*/
public interface NotificationDetailListener {

void showNotificationDetail(NotificationEvent notificationEvent);

void closeMessage(NotificationEvent notificationEvent);
}
Expand Up @@ -26,7 +26,6 @@
import org.zanata.webtrans.client.events.NotificationEvent;
import org.zanata.webtrans.client.events.NotificationEvent.Severity;
import org.zanata.webtrans.client.events.NotificationEventHandler;
import org.zanata.webtrans.client.ui.InlineLink;
import org.zanata.webtrans.client.view.NotificationDisplay;

import com.allen_sauer.gwt.log.client.Log;
Expand Down Expand Up @@ -78,10 +77,9 @@ public void setNotificationListener(NotificationLabelListener listener) {
listener.setNotificationLabel(0, Severity.Info);
}

private void appendNotification(Severity severity, String summary,
String msg, boolean displayAsHtml, InlineLink inlineLink) {
display.appendMessage(severity, summary, msg, displayAsHtml, inlineLink);
if (severity == Severity.Error) {
private void appendNotification(NotificationEvent event) {
display.appendMessage(event);
if (event.getSeverity() == Severity.Error) {
listener.showNotification();
}
}
Expand All @@ -96,9 +94,7 @@ protected void onRevealDisplay() {

@Override
public void onNotification(NotificationEvent event) {
appendNotification(event.getSeverity(), event.getSummary(),
event.getMessage(), event.isDisplayAsHtml(),
event.getInlineLink());
appendNotification(event);
Log.info("Notification:" + event.getMessage());
listener.setNotificationLabel(display.getMessageCount(),
event.getSeverity());
Expand Down

0 comments on commit 81fc13c

Please sign in to comment.