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

Commit

Permalink
Fix handling of metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
seanf committed Aug 5, 2013
1 parent 366c3b0 commit 226c778
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 52 deletions.
Expand Up @@ -21,8 +21,6 @@

package org.zanata.model.tm;

import java.util.Map;

import org.zanata.model.HasEntityDates;

/**
Expand All @@ -31,5 +29,6 @@
*/
public interface HasTMMetadata extends HasEntityDates
{
Map<TMMetadataType, String> getMetadata();
String getMetadata(TMMetadataType tmType);
void setMetadata(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
11 changes: 11 additions & 0 deletions zanata-model/src/main/java/org/zanata/model/tm/TransMemory.java
Expand Up @@ -85,4 +85,15 @@ public static TransMemory tm(String slug)
@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(TMMetadataType tmType, String metadata)
{
this.metadata.put(tmType, metadata);
}
}
Expand Up @@ -127,13 +127,24 @@ protected boolean logPersistence()
}

@Override
public Map<TMMetadataType, String> getMetadata()
public String getMetadata(TMMetadataType tmType)
{
HashMap<TMMetadataType,String> metadata = Maps.newHashMap();
if( metadataType != null )
if (this.metadataType == tmType)
{
metadata.put(this.metadataType, this.metadata);
return this.metadata;
}
return metadata;
return null;
}

@Override
public void setMetadata(TMMetadataType tmType, String metadata)
{
if (getMetadataType() != null && getMetadataType() != tmType)
{
throw new RuntimeException("Only one type of metadata is supported");
}
setMetadataType(tmType);
setMetadata(metadata);
}

}
Expand Up @@ -125,14 +125,24 @@ protected boolean logPersistence()
}

@Override
public Map<TMMetadataType, String> getMetadata()
public String getMetadata(TMMetadataType tmType)
{
HashMap<TMMetadataType,String> metadata = Maps.newHashMap();
if( metadataType != null )
if (this.metadataType == tmType)
{
metadata.put(this.metadataType, this.metadata);
return this.metadata;
}
return metadata;
return null;
}

@Override
public void setMetadata(TMMetadataType tmType, String metadata)
{
if (getMetadataType() != null && getMetadataType() != tmType)
{
throw new RuntimeException("Only one type of metadata is supported");
}
setMetadataType(tmType);
setMetadata(metadata);
}

public static Map<String, TransMemoryUnitVariant> newMap(TransMemoryUnitVariant... tuvs)
Expand Down
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
Expand Up @@ -32,6 +32,7 @@
import nu.xom.Element;

import org.zanata.common.LocaleId;
import org.zanata.model.tm.HasTMMetadata;
import org.zanata.model.tm.TMXMetadataHelper;
import org.zanata.model.tm.TransMemory;
import org.zanata.model.tm.TransMemoryUnitVariant;
Expand Down Expand Up @@ -65,7 +66,8 @@ public TransMemoryTMXExportStrategy(TransMemory tm)
public Element buildHeader() throws IOException
{
Element header = new Element("header");
addAttributesAndChildren(header, tm);
addAttributes(header, TMXMetadataHelper.getAttributes(tm));
addChildren(header, tm);
header.addAttribute(new Attribute("creationtool", creationTool));
header.addAttribute(new Attribute("creationtoolversion", creationToolVersion));
return header;
Expand All @@ -86,8 +88,8 @@ public Optional<Element> buildTU(TransMemoryUnit transUnit) throws IOException
{
tu.addAttribute(new Attribute("tuid", tuid));
}

addAttributesAndChildren(tu, transUnit);
addAttributes(tu, TMXMetadataHelper.getAttributes(transUnit));
addChildren(tu, transUnit);

for (TransMemoryUnitVariant tuv: transUnit.getTransUnitVariants().values())
{
Expand All @@ -106,29 +108,19 @@ private static Optional<LocaleId> getSourceLocale(TransMemoryUnit tu)
return Optional.absent();
}

private static void addAttributesAndChildren(Element toHeader, TransMemory fromTransMemory)
private static void addAttributes(Element toElem, ImmutableMap<String,String> attributes)
{
ImmutableMap<String,String> attributes = TMXMetadataHelper.getAttributes(fromTransMemory);
for (Map.Entry<String, String> attr : attributes.entrySet())
{
toHeader.addAttribute(toAttribute(attr));
}
for (Element child : TMXMetadataHelper.getChildren(fromTransMemory))
{
toHeader.appendChild(child);
toElem.addAttribute(toAttribute(attr));
}
}

private void addAttributesAndChildren(Element toTu, TransMemoryUnit fromTransUnit)
private static void addChildren(Element toHeader, HasTMMetadata fromTransMemory)
{
ImmutableMap<String,String> attributes = TMXMetadataHelper.getAttributes(fromTransUnit);
for (Map.Entry<String, String> attr : attributes.entrySet())
{
toTu.addAttribute(toAttribute(attr));
}
for (Element child : TMXMetadataHelper.getChildren(fromTransUnit))
for (Element child : TMXMetadataHelper.getChildren(fromTransMemory))
{
toTu.appendChild(child);
toHeader.appendChild(child);
}
}

Expand All @@ -148,17 +140,10 @@ private static Attribute toAttribute(Map.Entry<String, String> attr)
private static Element buildTUV(TransMemoryUnitVariant fromVariant)
{
Element tuv = new Element("tuv");
@Nonnull String trgContent = fromVariant.getPlainTextSegment();
ImmutableMap<String,String> attributes = TMXMetadataHelper.getAttributes(fromVariant);
for (Map.Entry<String, String> attr : attributes.entrySet())
{
tuv.addAttribute(toAttribute(attr));
}
for (Element child : TMXMetadataHelper.getChildren(fromVariant))
{
tuv.appendChild(child);
}
addAttributes(tuv, TMXMetadataHelper.getAttributes(fromVariant));
addChildren(tuv, fromVariant);
Element seg = new Element("seg");
@Nonnull String trgContent = fromVariant.getPlainTextSegment();
seg.appendChild(trgContent);
tuv.appendChild(seg);
return tuv;
Expand Down
Expand Up @@ -129,7 +129,7 @@ public void saveTransUnitsWithMetadata() throws Exception
unit.setTranslationMemory(tm);
unit.setSourceLanguage("en-US");
unit.setTransUnitId("unit-id-" + i);
unit.getMetadata().put(TMMetadataType.TMX14, "Metadata " + i);
unit.setMetadata(TMMetadataType.TMX14, "Metadata " + i);
tm.getTranslationUnits().add(unit);
}

Expand All @@ -141,8 +141,7 @@ public void saveTransUnitsWithMetadata() throws Exception
assertThat(stored.getTranslationUnits().size(), is(NUM_TRANS_UNITS));
for( TransMemoryUnit tu : tm.getTranslationUnits() )
{
assertThat(tu.getMetadata().size(), is(1));
assertThat(tu.getMetadata().get(TMMetadataType.TMX14), startsWith("Metadata "));
assertThat(tu.getMetadata(TMMetadataType.TMX14), startsWith("Metadata "));
}
}

Expand Down

0 comments on commit 226c778

Please sign in to comment.