Thursday, February 26, 2009

Super awesome Java form POST command line program



/*

This posts data to myserver to a Struts action, sending form data which then
gets transmitted to the crystal reports server. If the connection to the
crystal server can't be made, an error is displayed, and email(s) are sent.

Sample run:

[lupsha@myserver ~]$ /opt/SDK/jdk/bin/javac SimplePoster.java
[lupsha@myserver ~]$ /opt/SDK/jdk/bin/java SimplePoster
OK: Crystal server is UP
[lupsha@myserver ~]$




*/

import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.lang.Runtime;


public class SimplePoster
{

public SimplePoster()
{
try {

String postUrlStr = "http://MyServer/MyApp/mystrutsaction.do";

URL url = null;
url = new URL( postUrlStr );


URLConnection urlConnection = url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)");
urlConnection.setRequestProperty("Referer", "http://www.google.com" );
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");


String myForm = "showCriteria=Yes&rawData=Yes&methodID=*&status=*&action=Submit";
urlConnection.setRequestProperty("Content-Length", myForm.length() + "");


OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));

writer.write(myForm);
writer.flush();
writer.close();


InputStream ins = urlConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
String str = "";
StringBuffer returnStringBuffer = new StringBuffer("");
while((str = reader.readLine()) != null)
{
returnStringBuffer.append(str);
}

// System.out.println( returnStringBuffer.toString() );
if( returnStringBuffer.indexOf( "CrystalCompositeViewState" ) != -1 )
System.out.println("OK: Crystal server is UP");
else
{
System.out.println("BAD: Crystal server is DOWN!");
String command = "";
command += "/bin/echo \"Crystal server is down\"";
command += " | mail -s \"Crystal Server Down\" alan.lupsha@my.awesome.domain";
Runtime.getRuntime().exec(command);
}


} catch( Exception e )
{
System.out.println("Exception: " + e.toString() );
}


}



public static void main(String args[])
{
SimplePoster simplePoster = new SimplePoster();
}


}

How to send email from the Linux shell

/bin/echo "My custom message" | mail -s "My custom topic" alan.lupsha@my.email.address

Thursday, February 12, 2009

Stock market prediction formula

Market prediction M(H,S,t) is the extrapolation of data, in market M, given a history H on the delta(S,N), where S is the symbol being watched, and N is the set of neighbor symbols, observed over time t.

Friday, February 6, 2009

Wednesday, February 4, 2009

How to invoke maven to perform a jar library install

Invoke this installjar with:
sudo -u maven /home/maven/installjar $1 $2 $3 $4
Don't forget to add your user to the sudoers file.


> cat installjar
#!/bin/sh

# ==========================================
# by Alan Lupsha, 02/04/2009
# Installs a jar into the Maven2 repository
# ==========================================

GROUP=$1
ARTIFACT=$2
VERSION=$3
JARPATH=$4

MAVEN_DIR=/home/maven
export JAVA_HOME=/opt/SDK/jdk

checkUserArgs()
{
if [ "$GROUP" = "" ] ; then
syntax
fi
if [ "$ARTIFACT" = "" ] ; then
syntax
fi
if [ "$VERSION" = "" ] ; then
syntax
fi
if [ "$JARPATH" = "" ] ; then
syntax
fi

if [ -s "$JARPATH" ] ; then
echo "[ALAN] OK: file exists: $JARPATH"
else
echo "[ALAN] Error: file does not exist: $JARPATH"
echo "[ALAN] Make sure to upload the file there first, before executing the script"
RETURN_CODE=1
exit $RETURN_CODE
fi
}

syntax()
{
echo "[ALAN] ERROR: Please use the following syntax: ./installjar group artifact version path"
echo "[ALAN] "
echo "[ALAN] EXAMPLE: "
echo "[ALAN] To install jar file called servlet1.3.jar from your local directory, by placing it "
echo "[ALAN] in group basej2ee with the name servlet and version 1.3, do the following: "
echo "[ALAN] 1. FTP your jar into your directory, example: /home/smith_j/servlet1.3.jar"
echo "[ALAN] 2. Execute: ./installjar basej2ee servlet 1.3 ~/servlet1.3.jar "
echo "[ALAN] "
echo "[ALAN] 3. In your project's pom.xml file add the following dependency: "
echo "[ALAN] <dependency>"
echo "[ALAN] <groupId>basej2ee</groupId>"
echo "[ALAN] <artifactId>servlet</artifactId>"
echo "[ALAN] <version>1.3</version>"
echo "[ALAN] </dependency>"
echo "[ALAN] "
echo "[ALAN] Good luck."
RETURN_CODE=1
exit $RETURN_CODE
}

installFile()
{
/bin/mkdir $MAVEN_DIR/projects/
cd $MAVEN_DIR/projects/

COMMAND="/maven/maven-2.0.6/bin/mvn install:install-file -DgroupId=$GROUP -DartifactId=$ARTIFACT -Dversion=$VERSION -Dpackaging=jar -Dfile=$JARPATH"
echo "[ALAN] Executing command: "
echo "[ALAN] $COMMAND"

/maven/maven-2.0.6/bin/mvn install:install-file -DgroupId=$GROUP -DartifactId=$ARTIFACT -Dversion=$VERSION -Dpackaging=jar -Dfile=$JARPATH

echo "[ALAN] "
echo "[ALAN] Don't forget to add the following dependency in your project's pom.xml file:"
echo " <dependency>"
echo " <groupId>$GROUP</groupId>"
echo " <artifactId>$ARTIFACT</artifactId>"
echo " <version>$VERSION</version>"
echo " </dependency>"
echo "[ALAN] "
echo "[ALAN] If the install was successful, then you can remove your jar file from: $JARPATH "
}


checkUserArgs
installFile
echo "[ALAN] Finished! (questions, comments, concerns - email "

mySQL versus Oracle data types





Shell script to use Maven2 to build jar libraries

Invoke this bldjar with:
sudo -u maven /home/maven/bldjar $1 $2 $3 $4
Don't forget to add your user to the sudoers file.

> cat bldjar



#!/bin/sh
# ===================================================================
# This script builds a maven2 jar project, commits the new jar to CVS
# and optionally registers the new jar as a reusable library in maven.
# Alan Lupsha
# ====================================================================

# environment variables
export JAVA_HOME=/opt/SDK/jdk
export CVSROOT=/maven/cvsroot

PROJECT=$1
REGISTER_JAR=$2
GROUP=$3
ARTIFACT=$4
MAVEN_DIR=/home/maven
LAST_UPDATE="2009.02.04"
OK_TO_REGISTER_JAR="no"

check_user_arguments()
{
if [ "$PROJECT" = "" ] ; then
echo "[ALAN] You must pass the project name as an argument! ex: sudo -u maven /home/maven/bldjar my-abc"
PROJECT="noProjectSpecified"
RETURN_CODE=1
OK_TO_REGISTER_JAR="no"
exit $RETURN_CODE
fi

if [ "$REGISTER_JAR" = "registerjar" ] ; then
if [ "$GROUP" = "" ] ; then
echo "[ALAN] Error: invalid group. You asked to register the jar in group ->$GROUP<-"
echo "[ALAN] Syntax: bldjar registerjar GROUP ARTIFACT"
RETURN_CODE=1
OK_TO_REGISTER_JAR="no"
exit $RETURN_CODE
else
echo "[ALAN] Registering jar: group is ok: $GROUP"
fi
if [ "$ARTIFACT" = "" ] ; then
echo "[ALAN] Error: invalid artifact. You asked to register the jar using artifact ->$ARTIFACT<-"
echo "[ALAN] Syntax: bldjar registerjar GROUP ARTIFACT"
RETURN_CODE=1
OK_TO_REGISTER_JAR="no"
exit $RETURN_CODE
else
echo "[ALAN] Registering jar: artifact is ok: $ARTIFACT"
OK_TO_REGISTER_JAR="yes"
fi
else
REGISTER_JAR="dontregisterjar"
fi
echo "[ALAN] Your saved arguments are: $PROJECT $REGISTER_JAR $GROUP $ARTIFACT"
}


set_up_directories()
{
# set up the directories, copy source
cd $MAVEN_DIR
mkdir $MAVEN_DIR/projects/
cd $MAVEN_DIR/projects
cvs checkout $PROJECT
cd $MAVEN_DIR/projects/$PROJECT/
mkdir TEMP
mv src/* TEMP/
mkdir src/main/
mkdir src/main/java
mv TEMP/* src/main/java
}


perform_build()
{
# perform the build
/maven/maven-2.0.6/bin/mvn --offline clean package > $MAVEN_DIR/projects/$PROJECT/build.log
cat $MAVEN_DIR/projects/$PROJECT/build.log
cvs add -m 'your build log' build.log
cvs commit -m 'your build log' build.log
}


commit_the_jar()
{
# go into the target dir, there may or may NOT be something in there
mkdir $MAVEN_DIR/projects/$PROJECT/target/
cd $MAVEN_DIR/projects/$PROJECT/target/
JAR_NAME=`ls *.jar`
echo "[ALAN] Your jar file name is $JAR_NAME"

# just in case this doesn't exist
mkdir $MAVEN_DIR/projects/$PROJECT/dist/

# if the jar already existed, commit it
if [ -f "$MAVEN_DIR/projects/$PROJECT/dist/$JAR_NAME" ] ; then
rm $MAVEN_DIR/projects/$PROJECT/dist/$JAR_NAME
cp $MAVEN_DIR/projects/$PROJECT/target/$JAR_NAME $MAVEN_DIR/projects/$PROJECT/dist/
cd $MAVEN_DIR/projects/$PROJECT/dist/
cvs commit -m 'newly built' $JAR_NAME

# if the jar is brand new, add it to CVS and commit it
else
echo "[ALAN] Adding new file to CVS - first time ever"
cp $MAVEN_DIR/projects/$PROJECT/target/$JAR_NAME $MAVEN_DIR/projects/$PROJECT/dist/

cd $MAVEN_DIR/projects/$PROJECT/dist/
cvs add -m 'newly added' $JAR_NAME
cvs commit -m 'newly-added now committed by bldjar script' $JAR_NAME
fi
}

perform_cleanup()
{
# clean up
echo "[ALAN] Now cleaning up, removing $MAVEN_DIR/projects/$PROJECT/"
rm -Rf $MAVEN_DIR/projects/$PROJECT/

echo "[ALAN] Script version was last updated on: $LAST_UPDATE"
echo "[ALAN] Any questions, comments, concerns? Email me at: "
}

register_jar_as_library()
{
# check if we need to register the jar
if [ "$OK_TO_REGISTER_JAR" = "yes" ] ; then
echo "[ALAN] Now registering your jar as a dependency in the maven lib directory structure..."
extract_rvl_from_jar_name
/maven/maven-2.0.6/bin/mvn install:install-file -DgroupId=$GROUP -DartifactId=$ARTIFACT -Dversion=$RVL -Dpackaging=jar -Dfile=$MAVEN_DIR/projects/$PROJECT/dist/$JAR_NAME
echo "[ALAN] If the above registration was successful, don't forget to add this to your pom.xml:"
echo " <dependency>"
echo " <groupId>$GROUP</groupId>"
echo " <artifactId>$ARTIFACT</artifactId>"
echo " <version>$RVL</version>"
echo " </dependency>"
echo " "
else
echo "[ALAN] I'm not registering your jar as a library. Syntax for that is: ./bldjar YOUR-PROJECT registerjar GROUP ARTIFACT"
fi
}


extract_rvl_from_jar_name()
{
STR=$JAR_NAME
len=${#STR}
REV=""
for (( i=$len ; i>0 ; i-- ))
do
REV=$REV""${STR:$i-1:$i}
STR=${STR%${STR:$i-1:$i}}
done
#echo "Reversed string $REV"
#ex: raj.3.2.1-reganamytiruces-ped

NAME=`echo $REV | cut -f1 -d'-'`
#echo "$NAME"
#ex: raj.3.2.1

STR=$NAME
len=${#STR}
REV=""
for (( i=$len ; i>0 ; i-- ))
do
REV=$REV""${STR:$i-1:$i}
STR=${STR%${STR:$i-1:$i}}
done
#echo "Reversed string $REV"
#ex: 1.2.3.jar

FULLLEN=${#REV}
ENDPOS=FULLLEN-4
RVL=${REV:0:ENDPOS}
}


check_user_arguments
set_up_directories
perform_build
commit_the_jar
register_jar_as_library
perform_cleanup