Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Mantiki imageMediaLoader
- #by Zarren Spry <zarren.spry@virginwines.co.uk>
- #VARS
- BASEDIR="/vwnfs/mantiki/imageMediaLoader"
- DATADIR="$BASEDIR/interfaces/data/inbox/imageMediaLoader"
- MYSQL_HOST=""
- MYSQL_USER=""
- MYSQL_PASSWORD=""
- MYSQL_DB=""
- BOTTLEIMG_DIR="/vwnfs/mantiki/bottleImages"
- MEDIA_DIR="/vwnfs/mantiki/media"
- LOGDIR="$BASEDIR/logs"
- LIBDIR=$(dirname $0)./lib-mantiki
- XSDDIR=$(dirname $0)./xsd
- JAVA_OVERRIDE=imageMediaLoader.properties
- CLASSPATH=$XSDDIR:$BASEDIR/conf:$(find $LIBDIR -regex '.*\.jar' -printf :%p)
- JAVA_BIN=""
- TIME=1
- #MLV
- CONTROL_FILE_PNG=$(cat <<EOF
- select '"Filename","Media Class","Media subclass","Store code"," Key","Attribute","Preserve filename","Description","Alt Text","Title","Caption","Tags","Remove original"' as ''
- union
- select concat('"', p.product_code, '.png", "Product", "", "default", "', p.product_code, '", "product_images", "0", "', p.name , '", "', p.name, '", "', p.name, '", "', p.name, '", "', p.name, '", "0"') as ''
- from product p
- where p.product_code like 'Z%'
- union
- select concat('"', left(p.product_code, 6), '_XL.jpg", "Product", "", "default", "', p.product_code, '", "product_images", "0", "', p.name , '", "', p.name, '", "', p.name, '", "', p.name, '", "', p.name, '", "0"') as ''
- from product p
- where p.product_code like 'Y%';
- EOF
- )
- WGET_SQL=$(cat <<EOF
- select concat('wget -P $DATADIR/images/ http://d1f6pkbpgobziu.cloudfront.net/media2/lib/images/productimages/', p.product_code, '_HiRes.jpg') as ''
- from product p
- where p.product_code like 'Z%'
- union
- select concat('wget -P $DATADIR/images/ http://d1f6pkbpgobziu.cloudfront.net/media2/lib/images/caseshots/', left(p.product_code, 6), '_XL.jpg') as ''
- from product p
- where p.product_code like 'Y%';
- EOF
- )
- UPDATE_PROCESS_CONTROL=$(cat <<EOF
- UPDATE process_control_attribute SET value='$DATADIR/processed' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='processed.dir';
- UPDATE process_control_attribute SET value='$DATADIR/work' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='working.dir';
- UPDATE process_control_attribute SET value='$DATADIR/error' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='error.dir';
- UPDATE process_control_attribute SET value='$DATADIR/control' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='control.dir';
- UPDATE process_control_attribute SET value='$DATADIR/images' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='images.dir';
- UPDATE process_control_attribute SET value='$DATADIR/log' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='log.dir';
- DELETE FROM mantiki_config WHERE name='media.format.aspect.ratio.tolerance';
- INSERT INTO mantiki_config
- ( name, value, version, created_by, created_on,last_modified_by,last_modified_on)
- VALUES
- ('media.format.aspect.ratio.tolerance', 10, 1, 1, now(), 1, now());
- UPDATE process_control SET state='Idle', sequence_number_handling='None' WHERE name='Media Images Loader';
- DELETE FROM process_run WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader');
- EOF
- )
- # Functions
- function sanityCheck {
- echo "Running sanity checks."
- if [ ! -d "$BASEDIR" ]; then
- echo "$BASEDIR doesn't exist. Creating now."
- mkdir -p $BASEDIR/{conf,logs}
- fi
- if [ ! -d "$DATADIR" ]; then
- echo "$DATADIR doesn't exist. Creating now."
- mkdir -p $DATADIR/{work,control,archive,error,images,inbox,log,processed}
- fi
- if [ ! -d "$MEDIA_DIR" ]; then
- echo "$MEDIA_DIR doesn't exist. Creating now."
- mkdir -p $MEDIA_DIR/live-master-media-base/{shared,store}
- mkdir -p $MEDIA_DIR/staging-media-base/{shared,store}
- fi
- if [ ! -d "$BOTTLEIMG_DIR" ]; then
- echo "$BOTTLEIMG_DIR doesn't exist ? We need images to continue, check your setup and try again."
- exit 1
- fi
- echo "Testing mysql connection to $MYSQL_HOST."
- mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e exit
- if [ $? -eq 0 ]; then
- if ! mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e exit; then
- echo "$MYSQL_DB doesn't exist !"
- exit 1
- else
- echo "DB checks complete."
- fi
- else
- echo "There's a problem connection to $MYSQL_HOST. Check and try again"
- exit 1
- fi
- if [ -z $JAVA_BIN ]; then
- JAVA_BIN="$(which java)"
- if [ -z $JAVA_BIN ]; then
- echo "No java found ! Please specify by setting JAVA_BIN."
- exit 1
- fi
- fi
- }
- function cleanUp {
- echo "Clean up old files."
- rm -rf $DATADIR/work/*
- rm -rf $DATADIR/control/*
- rm -rf $DATADIR/images/*
- rm -rf $MEDIA_DIR/staging-media-base/*
- rm -rf $MEDIA_DIR/live-master-media-base/*
- rm -rf $LOGDIR/*
- rm -rf $BASEDIR/conf/*
- }
- function buildConfig {
- echo "Writing application configuration files."
- cat > $BASEDIR/conf/imageMediaLoader.properties <<EOF
- jdbc.driverClassName=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://$MYSQL_HOST:3306/vwshopstg
- jdbc.username=$MYSQL_USER
- jdbc.password=$MYSQL_PASSWORD
- default.store=0
- caches.enabled=false
- log.config.location=$BASEDIR/conf/log4j.xml
- log.poll.interval=0
- media.service.executable.path=/usr/bin
- staging.media.base.directory=file:$MEDIA_DIR/staging-media-base
- EOF
- cat > $BASEDIR/conf/log4j.xml <<EOF
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
- <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
- <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value="%d - %p - %C{1}.%M(%L) | %m%n"/>
- </layout>
- </appender>
- <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
- <param name="File" value="$BASEDIR/logs/imageMediaLoader.log"/>
- <param name="DatePattern" value="'.'yyyy-MM-dd"/>
- <param name="Append" value="true"/>
- <param name="Threshold" value="DEBUG"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d{HH:mm:ss:SSS} - %p - %C{1} - %m%n"/>
- </layout>
- </appender>
- <logger name="net.sf.ehcache">
- <level value="ERROR"/>
- </logger>
- <logger name="org.apache">
- <level value="WARN"/>
- </logger>
- <logger name="org.springframework">
- <level value="WARN"/>
- </logger>
- <logger name="org.springframework.jdbc.core.JdbcTemplate">
- <level value="WARN"/>
- </logger>
- <root>
- <level value="DEBUG"/>
- <appender-ref ref="CONSOLE"/>
- <appender-ref ref="FILE"/>
- </root>
- </log4j:configuration>
- EOF
- }
- function createControlCSV {
- echo "Creating $DATADIR/control/control.csv"
- echo $CONTROL_FILE_PNG | mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST > $DATADIR/control/control.csv
- if [ $? -ne 0 ]; then
- echo "Something went wrong."
- exit 1
- fi
- }
- function moveImages {
- echo "Moving cp $BOTTLEIMG_DIR/* $DATADIR/images/"
- cp $BOTTLEIMG_DIR/* $DATADIR/images/ >>$LOGDIR/imageprocessor.log 2>&1
- if [ $? -ne 0 ]; then
- echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info"
- exit 1
- fi
- }
- function createWGET {
- echo "Creating $DATADIR/images/wget.sh"
- echo $WGET_SQL | mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST > $DATADIR/images/wget.sh
- if [ $? -ne 0 ]; then
- echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info."
- exit 1
- fi
- chmod u+x $DATADIR/images/wget.sh
- }
- function runWGET {
- echo "Pulling data... Please wait."
- $DATADIR/images/wget.sh >>$LOGDIR/imageprocessor.log 2>&1
- if [ $? -ne 0 ]; then
- echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info."
- exit 1
- fi
- echo "Stage 1 complete !!! Please check everything and run stage 2."
- }
- function updateDB {
- echo "Updating database"
- echo $UPDATE_PROCESS_CONTROL | mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST >>$LOGDIR/imageprocessor.log 2>&1
- if [ $? -ne 0 ]; then
- echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info."
- exit 1
- fi
- }
- function imageMediaLoader {
- echo "Processing images, this may take a while !!!"
- $JAVA_BIN -Doverride-file=$JAVA_OVERRIDE -cp .:$CLASSPATH com.mantiki.demo.loader.media.ImageMediaLoaderExec -createPackage >>$LOGDIR/imageprocessor.log 2>&1
- if [ $? -ne 0 ]; then
- echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info."
- exit 1
- fi
- chown mantiki:mantiki -R $MEDIA_DIR
- }
- function timer () {
- diff="(($2-$1))"
- ((sec=diff%60, diff/=60, min=diff%60, hrs=diff/60))
- time=$(printf "%dh %02dm %02ds" $hrs $min $sec)
- echo "Process took $time to complete" >>$LOGDIR/imageprocessor.log
- echo "Process took $time to complete"
- }
- echo """Welcone to Zarren's Mantiki image processor.
- A simple wrapper around the Mantiki imagemagick java application.
- """
- case "$1" in
- stage1)
- if [ $TIME -eq 1 ]; then
- START=$(date +%s)
- cleanUp
- sanityCheck
- createControlCSV
- moveImages
- createWGET
- runWGET
- END=$(date +%s)
- timer $START $END
- else
- cleanUp
- sanityCheck
- createControlCSV
- moveImages
- createWGET
- runWGET
- fi
- ;;
- stage2)
- if [ $TIME -eq 1 ]; then
- START=$(date +%s)
- sanityCheck
- if [ ! -f "$BASEDIR/conf/imageMediaLoader.properties" ]; then
- buildConfig
- fi
- updateDB
- imageMediaLoader
- END=$(date +%s)
- timer $START $END
- else
- sanityCheck
- if [ ! -f "$BASEDIR/conf/imageMediaLoader.properties" ]; then
- buildConfig
- fi
- updateDB
- imageMediaLoader
- fi
- ;;
- cleanup)
- cleanUp
- ;;
- *)
- echo "Usage: $0 stage1 / stage2 / cleanup"
- exit 1
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement