package org.onehippo.forge.konakart.gogreen.replication.factory;
import com.konakart.app.Product;
import com.konakart.appif.LanguageIf;
import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.onehippo.forge.konakart.cms.replication.factory.DefaultProductFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import java.util.Collection;
/**
*
*/
public class GogreenProductFactory extends DefaultProductFactory {
private static Logger log = LoggerFactory.getLogger(GogreenProductFactory.class);
public static final String NO_TRANSLATION_YET = "NO TRANSLATION YET";
@Override
public boolean shouldAddProduct(Product product, LanguageIf language) {
return !StringUtils.equalsIgnoreCase(product.getName(), NO_TRANSLATION_YET);
}
@Override
protected String getLanguageToSetToHippoDoc(LanguageIf locale) {
return locale.getCode();
}
@Override
protected String createProductNodeRoot(Product product) {
// Get the creation time
DateTime dateTime = new DateTime(product.getDateAvailable().getTime().getTime());
return dateTime.getYear() + "/" + dateTime.getMonthOfYear();
}
@Override
protected void uploadImages(LanguageIf language, Node productNode, String baseImagePath, Product product) {
try {
String galleryRootNode = getGalleryRoot();
Collection<String> images = getImagesByLanguage(product, language);
for (String image : images) {
String rootImage = galleryRootNode + image;
try {
if (session.nodeExists(rootImage)) {
Node imageNode = session.getNode(rootImage);
linkImageToProduct(productNode, imageNode);
}
} catch (RepositoryException e) {
log.error("Failed to link the image to the product", e);
}
}
} catch (Exception e) {
log.error("Failed to add images", e);
}
}
}