Projects >> zanata-server >>49f2dca07a889d6e2d701dbe9592d694757ad01f

Chunk
Conflicting content
   }

public interface TranslationWorkspaceManager
{

<<<<<<< HEAD
   public static final String EVENT_WORKSPACE_CREATED = "webtrans.WorkspaceCreated";

   private Log log = Logging.getLog(TranslationWorkspaceManager.class);

   private final ConcurrentHashMap workspaceMap;
   private final Multimap projectIterationLocaleMap;
   private final Multimap localeWorkspaceMap;

   public TranslationWorkspaceManager()
   {
      this.workspaceMap = new ConcurrentHashMap();

      Multimap projectIterationLocaleMap = HashMultimap.create();
      this.projectIterationLocaleMap = Multimaps.synchronizedMultimap(projectIterationLocaleMap);

      Multimap localeWorkspaceMap = HashMultimap.create();
      this.localeWorkspaceMap = Multimaps.synchronizedMultimap(localeWorkspaceMap);

   }

   @Observer(ZanataInit.EVENT_Zanata_Startup)
   public void start()
   {
      log.info("starting...");
   @Observer(ZanataIdentity.USER_LOGOUT_EVENT)
   public void exitWorkspace(String username)
   {
      log.info("User logout: Removing {0} from all workspaces", username);
      ImmutableSet workspaceSet = ImmutableSet.copyOf(workspaceMap.values());
      for (TranslationWorkspace workspace : workspaceSet)
      {
         if (workspace.removeTranslator(new PersonId(username)))
         {
            log.info("Removing user {0} from workspace {1}", username, workspace.getWorkspaceContext());
            // Send GWT Event to client to update the userlist
            ExitWorkspace event = new ExitWorkspace(new PersonId(username));
            workspace.publish(event);
         }
      }
   }

   @Observer(ProjectHome.PROJECT_UPDATE)
   public void projectUpdate(HIterationProject project)
   {
      log.info("Project {0} updated", project.getSlug());
      ImmutableSet workspaceSet = ImmutableSet.copyOf(workspaceMap.values());
      for (TranslationWorkspace workspace : workspaceSet)
      {
         if (workspace.getWorkspaceContext().getWorkspaceId().getProjectIterationId().getProjectSlug().equals(project.getSlug()))
         {
            ProjectUpdate event = new ProjectUpdate(project.getSlug(), project.getStatus());
            workspace.publish(event);
         }
      }
   }

   @Observer(ProjectIterationHome.PROJECT_ITERATION_UPDATE)
   public void projectIterationUpdate(HProjectIteration projectIteration)
   {
      log.info("Project iteration {0} updated", projectIteration.getSlug());
      ImmutableSet workspaceSet = ImmutableSet.copyOf(workspaceMap.values());
      for (TranslationWorkspace workspace : workspaceSet)
      {
         if (workspace.getWorkspaceContext().getWorkspaceId().getProjectIterationId().getProjectSlug().equals(projectIteration.getProject().getSlug()) && 
 workspace.getWorkspaceContext().getWorkspaceId().getProjectIterationId().getIterationSlug().equals(projectIteration.getSlug()))
         {
            ProjectIterationUpdate event = new ProjectIterationUpdate(projectIteration.getProject().getSlug(), projectIteration.getProject().getStatus(), projectIteration.getSlug(), projectIteration.getStatus());
            workspace.publish(event);
         }
      }
   }

   @Destroy
   public void stop()
   {
      log.info("stopping...");
      log.info("closing down {0} workspaces: ", workspaceMap.size());
   }

   public ImmutableSet getLocales(ProjectIterationId projectIterationId)
   {
      return ImmutableSet.copyOf(projectIterationLocaleMap.get(projectIterationId));
   }

   public ImmutableSet getLocales()
   {
      return ImmutableSet.copyOf(localeWorkspaceMap.keySet());
   }

   public int getWorkspaceCount()
   {
      return workspaceMap.size();
   }

   public TranslationWorkspace getOrRegisterWorkspace(WorkspaceId workspaceId) throws NoSuchWorkspaceException
   {
      TranslationWorkspace workspace = workspaceMap.get(workspaceId);
      if (workspace == null)
      {
         workspace = createWorkspace(workspaceId);
         TranslationWorkspace prev = workspaceMap.putIfAbsent(workspaceId, workspace);

         if (prev == null)
         {
            projectIterationLocaleMap.put(workspaceId.getProjectIterationId(), workspaceId.getLocaleId());
            localeWorkspaceMap.put(workspaceId.getLocaleId(), workspace);
            if (Events.exists())
               Events.instance().raiseEvent(EVENT_WORKSPACE_CREATED, workspaceId);
         }

         return prev == null ? workspace : prev;
      }

      validateAndGetWorkspaceContext(workspaceId);

      return workspace;
   }
   private WorkspaceContext validateAndGetWorkspaceContext(WorkspaceId workspaceId) throws NoSuchWorkspaceException
   {
      Session session = (Session) Component.getInstance("session");

      EntityStatus projectStatus = (EntityStatus) session.createQuery("select p.status from HProject as p where p.slug = :slug").setParameter("slug", workspaceId.getProjectIterationId().getProjectSlug()).uniqueResult();
      if (projectStatus.equals(EntityStatus.OBSOLETE))
      {
         throw new NoSuchWorkspaceException("Project is obsolete");
      }

      EntityStatus projectIterationStatus = (EntityStatus) session.createQuery("select it.status from HProjectIteration it where it.slug = :slug and it.project.slug = :pslug").setParameter("slug", workspaceId.getProjectIterationId().getIterationSlug()).setParameter("pslug", workspaceId.getProjectIterationId().getProjectSlug()).uniqueResult();
      if (projectIterationStatus.equals(EntityStatus.OBSOLETE))
      {
         throw new NoSuchWorkspaceException("Project Iteration is obsolete");
      }

      String workspaceName = (String) session.createQuery("select it.project.name || ' (' || it.slug || ')' " + "from HProjectIteration it " + "where it.slug = :slug " + "and it.project.slug = :pslug " + "and it.status <> :status").setParameter("slug", workspaceId.getProjectIterationId().getIterationSlug()).setParameter("pslug", workspaceId.getProjectIterationId().getProjectSlug()).setParameter("status", EntityStatus.OBSOLETE).uniqueResult();
      if (workspaceName == null)
      {
         throw new NoSuchWorkspaceException("Invalid workspace Id");
      }

      if (projectStatus.equals(EntityStatus.READONLY) || projectIterationStatus.equals(EntityStatus.READONLY))
      {
         return new WorkspaceContext(workspaceId, workspaceName, ULocale.getDisplayName(workspaceId.getLocaleId().toJavaName(), ULocale.ENGLISH), true);
      }

      return new WorkspaceContext(workspaceId, workspaceName, ULocale.getDisplayName(workspaceId.getLocaleId().toJavaName(), ULocale.ENGLISH), false);
   }

   private TranslationWorkspace createWorkspace(WorkspaceId workspaceId) throws NoSuchWorkspaceException
   {
      WorkspaceContext workspaceContext = validateAndGetWorkspaceContext(workspaceId);

      return new TranslationWorkspace(workspaceContext);
   }

   public TranslationWorkspace getWorkspace(ProjectIterationId projectIterationId, LocaleId localeId)
   {
      WorkspaceId workspaceId = new WorkspaceId(projectIterationId, localeId);
      return getWorkspace(workspaceId);
   }

   public TranslationWorkspace getWorkspace(WorkspaceId workspaceId)
   {
      return workspaceMap.get(workspaceId);
   }

   public ImmutableSet getWorkspaces(LocaleId locale)
   {
      return ImmutableSet.copyOf(localeWorkspaceMap.get(locale));
   }

   public ImmutableSet getProjects()
   {
      return ImmutableSet.copyOf(projectIterationLocaleMap.keySet());
   }
=======
   public TranslationWorkspace getOrRegisterWorkspace(WorkspaceId workspaceId) throws NoSuchWorkspaceException;
>>>>>>> b91743d3273b4189292aa00175079deb0d14c130

}
Solution content
public interface TranslationWorkspaceManager
{

   public TranslationWorkspace getOrRegisterWorkspace(WorkspaceId workspaceId) throws NoSuchWorkspaceException;

}
File
TranslationWorkspaceManager.java
Developer's decision
Version 2
Kind of conflict
Annotation
Attribute
Method declaration
Method interface
Method invocation