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

Commit

Permalink
Merge branch 'tm-import' into tmx-dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlos A. Munoz committed Aug 6, 2013
2 parents 0a5bddc + 1d77175 commit 3144ebb
Show file tree
Hide file tree
Showing 21 changed files with 319 additions and 174 deletions.
Expand Up @@ -21,7 +21,7 @@

package org.zanata.model.tm;

import java.util.Map;
import javax.annotation.Nonnull;

import org.zanata.model.HasEntityDates;

Expand All @@ -31,5 +31,6 @@
*/
public interface HasTMMetadata extends HasEntityDates
{
Map<TMMetadataType, String> getMetadata();
String getMetadata(TMMetadataType tmType);
void setMetadata(@Nonnull TMMetadataType tmType, String metadata);
}
Expand Up @@ -80,7 +80,7 @@ public static List<Element> getChildren(HasTMMetadata fromEntity)
{
try
{
String metadataString = fromEntity.getMetadata().get(TMMetadataType.TMX14);
String metadataString = fromEntity.getMetadata(TMMetadataType.TMX14);
if (metadataString == null)
{
return Collections.emptyList();
Expand Down Expand Up @@ -177,7 +177,7 @@ public static List<Element> getChildren(HasTMMetadata fromEntity)
@SuppressWarnings("null")
private static @Nonnull Map<String, String> getGenericMetadata(HasTMMetadata fromEntity)
{
String metadataString = fromEntity.getMetadata().get(TMMetadataType.TMX14);
String metadataString = fromEntity.getMetadata(TMMetadataType.TMX14);
if (metadataString == null)
{
return ImmutableMap.of();
Expand Down Expand Up @@ -287,7 +287,7 @@ private static void setGenericMetadata(HasTMMetadata toEntity, Map<String, Objec
try
{
String json = jsonMapper.writeValueAsString(fromMetadata);
toEntity.getMetadata().put(TMMetadataType.TMX14, json);
toEntity.setMetadata(TMMetadataType.TMX14, json);
}
catch (Exception e)
{
Expand Down
15 changes: 14 additions & 1 deletion zanata-model/src/main/java/org/zanata/model/tm/TransMemory.java
Expand Up @@ -22,6 +22,8 @@

import java.util.Map;
import java.util.Set;

import javax.annotation.Nonnull;
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Column;
Expand Down Expand Up @@ -80,9 +82,20 @@ public static TransMemory tm(String slug)
*/
@ElementCollection
@MapKeyEnumerated(EnumType.STRING)
@MapKeyColumn(name = "metadata_key")
@MapKeyColumn(name = "metadata_type")
@JoinTable(name = "TransMemory_Metadata", joinColumns = {@JoinColumn(name = "trans_memory_id")})
@Column(name = "metadata",length = Integer.MAX_VALUE)
private Map<TMMetadataType, String> metadata = Maps.newHashMap();

@Override
public String getMetadata(TMMetadataType tmType)
{
return metadata.get(tmType);
}

@Override
public void setMetadata(@Nonnull TMMetadataType tmType, String metadata)
{
this.metadata.put(tmType, metadata);
}
}
43 changes: 33 additions & 10 deletions zanata-model/src/main/java/org/zanata/model/tm/TransMemoryUnit.java
Expand Up @@ -20,14 +20,19 @@
*/
package org.zanata.model.tm;

import java.util.HashMap;
import java.util.Map;

import javax.annotation.Nonnull;
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
Expand Down Expand Up @@ -100,21 +105,19 @@ public TransMemoryUnit(TransMemory tm, String uniqueId, String transUnitId, Stri
@Column(nullable = true)
private Integer position;

@OneToMany(cascade = CascadeType.ALL)
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "trans_unit_id", nullable = false)
@MapKey(name = "language")
@IndexedEmbedded
private Map<String, TransMemoryUnitVariant> transUnitVariants = Maps.newHashMap();

/**
* Map values are Json strings containing metadata for the particular type of translation memory
*/
@ElementCollection
@MapKeyEnumerated(EnumType.STRING)
@MapKeyColumn(name = "metadata_key")
@JoinTable(name = "TransMemoryUnit_Metadata", joinColumns = {@JoinColumn(name = "tm_trans_unit_id")})
@Column(name = "metadata", length = Integer.MAX_VALUE)
private Map<TMMetadataType, String> metadata = Maps.newHashMap();
@Enumerated(EnumType.STRING)
@Column(name = "metadata_type", nullable = true)
private TMMetadataType metadataType;

@Column(nullable = true)
@Basic(fetch = FetchType.LAZY)
private String metadata;

public TransMemoryUnit(String uniqueId)
{
Expand All @@ -126,4 +129,24 @@ protected boolean logPersistence()
{
return false;
}

@Override
public String getMetadata(TMMetadataType tmType)
{
if (this.metadataType == tmType)
{
return this.metadata;
}
return null;
}

@Override
public void setMetadata(@Nonnull TMMetadataType tmType, String metadata)
{
assert this.metadataType == null || this.metadataType == tmType :
"Only one type of metadata is supported for this entity";
setMetadataType(tmType);
setMetadata(metadata);
}

}
Expand Up @@ -20,13 +20,19 @@
*/
package org.zanata.model.tm;

import java.util.HashMap;
import java.util.Map;

import javax.annotation.Nonnull;
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.MapKeyColumn;
Expand Down Expand Up @@ -81,15 +87,13 @@ public class TransMemoryUnitVariant extends ModelEntityBase implements HasTMMeta
@Column(name ="plain_text_segment_hash", nullable = false)
private String plainTextSegmentHash;

/**
* Map values are Json strings containing metadata for the particular type of translation memory
*/
@ElementCollection
@JoinTable(name = "TransMemoryUnitVariant_Metadata", joinColumns = {@JoinColumn(name = "tm_trans_unit_variant_id")})
@MapKeyEnumerated(EnumType.STRING)
@MapKeyColumn(name = "metadata_key")
@Column(name = "metadata", length = Integer.MAX_VALUE)
private Map<TMMetadataType, String> metadata = Maps.newHashMap();
@Enumerated(EnumType.STRING)
@Column(name = "metadata_type", nullable = true)
private TMMetadataType metadataType;

@Column(nullable = true)
@Basic(fetch = FetchType.LAZY)
private String metadata;

public static TransMemoryUnitVariant tuv(String language, String content)
{
Expand Down Expand Up @@ -125,6 +129,25 @@ protected boolean logPersistence()
return false;
}

@Override
public String getMetadata(TMMetadataType tmType)
{
if (this.metadataType == tmType)
{
return this.metadata;
}
return null;
}

@Override
public void setMetadata(@Nonnull TMMetadataType tmType, String metadata)
{
assert this.metadataType == null || this.metadataType == tmType :
"Only one type of metadata is supported for this entity";
setMetadataType(tmType);
setMetadata(metadata);
}

public static Map<String, TransMemoryUnitVariant> newMap(TransMemoryUnitVariant... tuvs)
{
Map<String, TransMemoryUnitVariant> map = Maps.newHashMap();
Expand Down
Expand Up @@ -25,12 +25,17 @@

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.annotations.security.Restrict;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.framework.EntityHome;
import org.jboss.seam.international.StatusMessage;
import org.zanata.dao.TransMemoryDAO;
import org.zanata.model.tm.TransMemory;
import org.zanata.service.SlugEntityService;
import com.google.common.base.Optional;

import static org.jboss.seam.international.StatusMessage.Severity.ERROR;

/**
* Controller class for the Translation Memory UI.
Expand Down Expand Up @@ -74,12 +79,34 @@ public boolean validateSlug(String slug, String componentId)
return true;
}

@Transactional
public void clearTransMemory(String transMemorySlug)
{
transMemoryDAO.deleteTransMemoryContents(transMemorySlug);
transMemoryList = null; // Force refresh next time list is requested
}

@Transactional
public void deleteTransMemory(String transMemorySlug)
{
Optional<TransMemory> slugOp = transMemoryDAO.getBySlug(transMemorySlug);
if( !slugOp.isPresent() )
{
FacesMessages.instance().addFromResourceBundle(ERROR, "jsf.transmemory.TransMemoryNotFound");
}
else
{
transMemoryDAO.deleteTransMemoryContents(transMemorySlug);
transMemoryDAO.makeTransient(slugOp.get());
transMemoryList = null; // Force refresh next time list is requested
}
}

public long getTranslationMemorySize(String tmSlug)
{
return transMemoryDAO.getTranslationMemorySize(tmSlug);
}

public String cancel()
{
// Navigation logic in pages.xml
Expand Down
13 changes: 11 additions & 2 deletions zanata-war/src/main/java/org/zanata/dao/TransMemoryDAO.java
Expand Up @@ -21,7 +21,6 @@
package org.zanata.dao;

import java.util.Iterator;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

Expand All @@ -31,10 +30,10 @@
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Transactional;
import org.zanata.exception.EntityMissingException;
import org.zanata.model.tm.TransMemory;
import org.zanata.model.tm.TransMemoryUnit;

import com.google.common.base.Optional;

/**
Expand Down Expand Up @@ -67,6 +66,7 @@ public Optional<TransMemory> getBySlug(@Nonnull String slug)
return Optional.absent();
}

@Transactional
public void deleteTransMemoryContents(@Nonnull String slug)
{
Optional<TransMemory> tm = getBySlug(slug);
Expand All @@ -93,4 +93,13 @@ public void deleteTransMemoryContents(@Nonnull String slug)
.setCacheable(false)
.uniqueResult();
}

public long getTranslationMemorySize(@Nonnull String tmSlug)
{
return (Long)getSession()
.createQuery("select count(tu) from TransMemoryUnit tu where tu.translationMemory.slug = :tmSlug")
.setString("tmSlug", tmSlug)
.setCacheable(true)
.uniqueResult();
}
}
Expand Up @@ -66,11 +66,10 @@ public CloseableIterator<TransMemoryUnit> findTransUnitsByTM(TransMemory transMe
try
{
Query q = iter.getSession().createQuery(
"from TransMemoryUnit tu " +
"inner join fetch tu.translationMemory tm " +
"inner join fetch tu.transUnitVariants " +
"where tm=:transMemory"
);
"FROM TransMemoryUnit tu FETCH ALL PROPERTIES " +
"JOIN FETCH tu.transUnitVariants tuv FETCH ALL PROPERTIES " +
"WHERE tu.translationMemory = :transMemory " +
"");
q.setParameter("transMemory", transMemory);
q.setComment("TransMemoryStreamingDAO.findTransUnitsByTM");

Expand Down

0 comments on commit 3144ebb

Please sign in to comment.