package org.onehippo.cms7.hst.hippokart.dbupdate; import com.konakart.bl.KKCriteria; import com.konakart.om.BaseProductsPeer; import com.konakartadmin.app.*; import com.konakartadmin.appif.KKAdminIf; import com.konakartadmin.bl.AdminMgrFactory; import com.konakartadmin.blif.AdminProductMgrIf; import com.konakartadmin.ws.KKAdminEngineMgr; import com.workingdogs.village.Record; import joptsimple.OptionParser; import joptsimple.OptionSet; import org.apache.commons.lang.StringUtils; import org.apache.torque.util.BasePeer; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.List; import static java.util.Arrays.asList; public class UpdateImages { public static String sessionId = null; /** engClassName - Name of the engine to use */ private static String engClassName = "com.konakartadmin.bl.KKAdmin"; public static void main(String[] args) throws Exception, IOException, InvocationTargetException, KKAdminException, InstantiationException, IllegalAccessException { OptionParser parser = new OptionParser() { { accepts("env", "local, remote").withRequiredArg().ofType(String.class); accepts("u", "admin username").withRequiredArg().ofType(String.class); accepts("p", "admin password").withRequiredArg().ofType(String.class); acceptsAll( asList( "h", "?" ), "show help" ); } }; OptionSet options = parser.parse(args); if (options.hasArgument("?")) { parser.printHelpOn(System.out); } String username = null; String password = null; String environment = null; if (options.hasArgument("env")) { environment = options.valueOf("env").toString(); } if (options.hasArgument("u")) { username = options.valueOf("u").toString(); } if (options.hasArgument("p")) { password = options.valueOf("p").toString(); } String propertiesFile = null; if (environment != null) { propertiesFile = "konakartadmin-" + environment + ".properties"; } Class.forName("com.mysql.jdbc.Driver"); // Initialize the database createAdminMgrFactory(username, password, "store1", propertiesFile); KKCriteria kkCriteria = new KKCriteria(); kkCriteria.addSelectColumn(BaseProductsPeer.PRODUCTS_ID); kkCriteria.addSelectColumn(BaseProductsPeer.PRODUCTS_IMAGE); List<Record> results = BasePeer.doSelect(kkCriteria); for (Record result : results) { int productId = result.getValue(1).asInt(); String imageName = result.getValue(2).asString(); String imagePattern = StringUtils.substringBefore(imageName, "."); String ext = StringUtils.substringAfter(imageName, "."); String imageName0 = imagePattern + "_big." + ext; String imageName1 = imagePattern + "_1_big." + ext; String imageName2 = imagePattern + "_2_big." + ext; String imageName3 = imagePattern + "_3_big." + ext; kkCriteria = new KKCriteria(); kkCriteria.addSelectColumn(BaseProductsPeer.PRODUCTS_ID); kkCriteria.add(BaseProductsPeer.PRODUCTS_ID, productId); kkCriteria.addForInsert(BaseProductsPeer.PRODUCTS_IMAGE, imageName0); kkCriteria.addForInsert(BaseProductsPeer.PRODUCTS_IMAGE2, imageName1); kkCriteria.addForInsert(BaseProductsPeer.PRODUCTS_IMAGE3, imageName2); kkCriteria.addForInsert(BaseProductsPeer.PRODUCTS_IMAGE4, imageName3); BasePeer.doUpdate(kkCriteria); System.out.println("Product id " + productId + " has been updated."); } // All done! System.out.println("\nAll done!"); } public static AdminMgrFactory createAdminMgrFactory(String username, String password, String storeName, String propertiesFile) throws KKAdminException, InvocationTargetException, ClassNotFoundException, IllegalAccessException, InstantiationException { /* * Instantiate a KonaKart Admin Engine instance by name */ KKAdminEngineMgr kkAdminEngMgr = new KKAdminEngineMgr(); AdminEngineConfig adEngConf = new AdminEngineConfig(); adEngConf.setMode(0); // adEngConf.setStoreId(storeName); // adEngConf.setPropertiesFileName(propertiesFile); /* * This creates a KonaKart Admin Engine by name using the constructor that requires an * AdminEngineConfig object. This is the recommended approach. */ KKAdminIf eng = kkAdminEngMgr.getKKAdminByName(engClassName, adEngConf); sessionId = eng.login(username, password); return new AdminMgrFactory(eng); } }