2011년 3월 24일 목요일

아이들을 위한 글자 공부 안드로이드 어플

드디어 저의 첫 어플을 마켓에 등록하였습니다.
많은 관심 부탁드립니다.

이름 : 연필 (Pencil)
가격 : 무료
언어 : 영어,한국어
지원버전 : 1.6 이상, 800 x 480 WVGA
스토어 : 안드로이드 마켓












http://market.android.com/details?id=com.jnc.pencil

Pencil - an android app for kids

Kids like to write letters on the phone using their finger.
They are also enjoy listening their voice from machine.
The kids learning letters can study and enjoy at the same time.

[feature]

select letter : alphabet(capital) / alphabet(small) / numbers / korean
writing : watching the order of letters writing first.
               writing by finger(color and size can be changed by user)
               listening native pronunciation, recording user's
               Praise stamp will come out after writing
watching : watching the order of letters, listening pronunciation
               changing the playing speed(fast/normal/slow)
playing : searching for the pronunciation listening
               setting order ( sequential / random )


2011년 3월 10일 목요일

Android ACCELEROMETER sensor sample

public class ShakeActivity extends Activity implements SensorEventListener {

private static final int SHAKE_THRESHOLD = 800;
private long lastTime;
private float speed;
private float lastX;
private float lastY;
private float lastZ;
private float x, y, z;

private SensorManager sensorManager;
private Sensor accelerormeterSensor;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerormeterSensor = sensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

}


@Override
public void onStart() {
super.onStart();

if (accelerormeterSensor != null)
sensorManager.registerListener(this, accelerormeterSensor,
SensorManager.SENSOR_DELAY_GAME);
}


@Override
public void onStop() {
super.onStop();

if (sensorManager != null)
sensorManager.unregisterListener(this);
}


@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}


@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
long currentTime = System.currentTimeMillis();
long gabOfTime = (currentTime - lastTime);

if (gabOfTime > 100) {
lastTime = currentTime;


x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];


speed = Math.abs(x + y + z - lastX - lastY - lastZ) / gabOfTime * 10000;

if (speed > SHAKE_THRESHOLD) {
Log.d("TAG","##################### shaked #####################");

}
lastX = event.values[SensorManager.DATA_X];
lastY = event.values[SensorManager.DATA_Y];
lastZ = event.values[SensorManager.DATA_Z];
}
}
}

}

Android Screen Capture

View root = view.getRootView();
root.setDrawingCacheEnabled(true);
bm = root.getDrawingCache();

File path = new File("/sdcard/samplecapture");

FileOutputStream out = new FileOutputStream("/sdcard/screen.jpg");
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);

Android animation sample

public class AnimationTest extends Activity {
/** Called when the activity is first created. */

private AnimationDrawable aniDraw;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

BitmapDrawable ani1 = (BitmapDrawable)getResources().getDrawable(R.drawable.ani1);
BitmapDrawable ani2 = (BitmapDrawable)getResources().getDrawable(R.drawable.ani2);
BitmapDrawable ani3 = (BitmapDrawable)getResources().getDrawable(R.drawable.ani3);
BitmapDrawable ani4 = (BitmapDrawable)getResources().getDrawable(R.drawable.ani4);
BitmapDrawable ani5 = (BitmapDrawable)getResources().getDrawable(R.drawable.ani5);

aniDraw = new AnimationDrawable();
aniDraw.addFrame(ani1,100);
aniDraw.addFrame(ani2,100);
aniDraw.addFrame(ani3,100);
aniDraw.addFrame(ani4,100);
aniDraw.addFrame(ani5,100);

ImageView imgView = (ImageView)findViewById(R.id.imgView);

imgView.setBackgroundDrawable(aniDraw);
aniDraw.setOneShot(false);

Button btn = (Button)findViewById(R.id.btn);

btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
aniDraw.start();
}

});



}
}

oceanarium

Home Apk Search

try {
PackageManager mPm = context.getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_HOME);
rList = mPm.queryIntentActivities( mainIntent, 0 );
} catch ( Exception e ) {
Log.e(LOG_TAG, "getHomeApp() Error", e);
}

for (int i=0; i
ResolveInfo ri = rList.get(i);

Log.v(LOG_TAG ,"[" +cName.getClassName() + "] = [" + ri.activityInfo.name+"]" );

if ( cName.getClassName().equals(ri.activityInfo.name) ) return true;

}

java tiff dpi setting

import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import javax.imageio.metadata.*;
import javax.imageio.stream.*;
import org.w3c.dom.*;
import com.sun.media.imageio.plugins.tiff.BaselineTIFFTagSet;
import com.sun.media.imageio.plugins.tiff.TIFFDirectory;
import com.sun.media.imageio.plugins.tiff.TIFFField;
import com.sun.media.imageio.plugins.tiff.TIFFTag;

/**
* Example class showing two ways to write DPI values to a TIFF image.
*/
public class TIFFWriteDPI {
private static String METADATA_NAME =
"com_sun_media_imageio_plugins_tiff_image_1.0";

private static int DPI_X = 42;
private static int DPI_Y = 24;

public static void main(String[] args) throws Throwable {
// Create sample image.
RenderedImage image = new BufferedImage(256, 256,
BufferedImage.TYPE_3BYTE_BGR);

// Get TIFF writer.
Iterator writers = ImageIO.getImageWritersByFormatName("TIFF");
if(writers == null || !writers.hasNext())
throw new IllegalStateException("No TIFF writers!");
ImageWriter writer = (ImageWriter)writers.next();

// Get the default image metadata.
ImageTypeSpecifier imageType =
ImageTypeSpecifier.createFromRenderedImage(image);
IIOMetadata imageMetadata =
writer.getDefaultImageMetadata(imageType, null);

// Set DPI.
String fileName;
String methodology;
if(args.length == 0 || args[0].equalsIgnoreCase("DOM")) {
fileName = "dpi_dom.tif";
setDPIViaDOM(imageMetadata);
methodology = "DOM";
} else {
fileName = "dpi_api.tif";
imageMetadata = setDPIViaAPI(imageMetadata);
methodology = "API";
}

System.out.println("\nWriting "+fileName+
" using "+methodology+" methodology\n");

// Write image.
writer.setOutput(new FileImageOutputStream(new File(fileName)));
writer.write(new IIOImage(image, null, imageMetadata));
}

/**
* Set DPI using DOM nodes.
*/
private static void setDPIViaDOM(IIOMetadata imageMetadata)
throws IIOInvalidTreeException {
// Get the DOM tree.
IIOMetadataNode root =
(IIOMetadataNode)imageMetadata.getAsTree(METADATA_NAME);

// Get the IFD.
IIOMetadataNode ifd =
(IIOMetadataNode)root.getElementsByTagName("TIFFIFD").item(0);

// Get {X,Y}Resolution tags.
BaselineTIFFTagSet base = BaselineTIFFTagSet.getInstance();
TIFFTag tagXRes = base.getTag(BaselineTIFFTagSet.TAG_X_RESOLUTION);
TIFFTag tagYRes = base.getTag(BaselineTIFFTagSet.TAG_Y_RESOLUTION);

// Create {X,Y}Resolution nodes.
IIOMetadataNode nodeXRes = createRationalNode(tagXRes.getName(),
tagXRes.getNumber(),
DPI_X, 1);
IIOMetadataNode nodeYRes = createRationalNode(tagYRes.getName(),
tagYRes.getNumber(),
DPI_Y, 1);

// Append {X,Y}Resolution nodes to IFD node.
ifd.appendChild(nodeXRes);
ifd.appendChild(nodeYRes);

// Set metadata from tree.
imageMetadata.setFromTree(METADATA_NAME, root);
}

/**
* Creates a node of TIFF data type RATIONAL.
*/
private static IIOMetadataNode createRationalNode(String tagName,
int tagNumber,
int numerator,
int denominator) {
// Create the field node with tag name and number.
IIOMetadataNode field = new IIOMetadataNode("TIFFField");
field.setAttribute("name", tagName);
field.setAttribute("number", "" + tagNumber);

// Create the RATIONAL node.
IIOMetadataNode rational = new IIOMetadataNode("TIFFRational");
rational.setAttribute("value", numerator+"/"+denominator);

// Create the RATIONAL node and append RATIONAL node.
IIOMetadataNode rationals = new IIOMetadataNode("TIFFRationals");
rationals.appendChild(rational);

// Append RATIONALS node to field node.
field.appendChild(rationals);

return field;
}

/**
* Set DPI using API.
*/
private static IIOMetadata setDPIViaAPI(IIOMetadata imageMetadata)
throws IIOInvalidTreeException {
// Derive the TIFFDirectory from the metadata.
TIFFDirectory dir = TIFFDirectory.createFromMetadata(imageMetadata);

// Get {X,Y}Resolution tags.
BaselineTIFFTagSet base = BaselineTIFFTagSet.getInstance();
TIFFTag tagXRes = base.getTag(BaselineTIFFTagSet.TAG_X_RESOLUTION);
TIFFTag tagYRes = base.getTag(BaselineTIFFTagSet.TAG_Y_RESOLUTION);

// Create {X,Y}Resolution fields.
TIFFField fieldXRes = new TIFFField(tagXRes, TIFFTag.TIFF_RATIONAL,
1, new long[][] {{DPI_X, 1}});
TIFFField fieldYRes = new TIFFField(tagYRes, TIFFTag.TIFF_RATIONAL,
1, new long[][] {{DPI_Y, 1}});

// Append {X,Y}Resolution fields to directory.
dir.addTIFFField(fieldXRes);
dir.addTIFFField(fieldYRes);

// Convert to metadata object and return.
return dir.getAsMetadata();
}
}

Tiff G4 conversion

BufferedImage outputImage = new BufferedImage(ire.getWidth(null), ire.getHeight(null), BufferedImage.TYPE_BYTE_BINARY);
outputImage.createGraphics().drawImage(ire, 0, 0, null);

TIFFEncodeParam param = new TIFFEncodeParam();
param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);

FileOutputStream stream = new FileOutputStream(new File(path));

TIFFImageEncoder encoder = (TIFFImageEncoder) TIFFCodec.createImageEncoder("tiff", stream, param);
encoder.encode(outputImage);




//=====================================
ImageOutputStream out = ImageIO.createImageOutputStream(new File("c:\\temp\\ggg.tif"));

ImageWriter writer = ImageIO.getImageWritersByFormatName("tiff").next();

ImageWriteParam param2 = writer.getDefaultWriteParam();
param2.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param2.setCompressionType("CCITT T.4");

writer.setOutput(out);
writer.write(null,new IIOImage(ImageIO.read(new File(path)),null,null), param2);

writer.dispose();
out.close();
//=====================================

jpeg2000 conversion

< %@ page language="java" contentType="image/jpeg" pageEncoding="UTF-8"%>

< %@page import!="java.awt.Image"%>
< %@page import!="java.awt.image.BufferedImage"%>
< %@page import!="java.io.File"%>

< %@page import!="javax.imageio.ImageIO"%>
< %@page import!="java.applet!.Applet!"%>
< %@page import!="java.awt.Button"%>
< %@page import!="java.awt.Graphics"%>
< %@page import!="java.awt.Image"%>
< %@page import!="java.awt.Rectangle"%>
< %@page import!="java.awt.TextArea"%>
< %@page import!="java.awt.event.ActionEvent"%>
< %@page import!="java.awt.event.ActionListener"%>
< %@page import!="java.awt.image.BufferedImage"%>
< %@page import!="java.awt.image.RenderedImage"%>
< %@page import!="java.io.DataInputStream"%>
< %@page import!="java.io.DataOutputStream"%>
< %@page import!="java.io.File"%>
< %@page import!="java.io.FileOutputStream"%>
< %@page import!="java.io.IOException"%>
< %@page import!="java.net.Socket"%>
< %@page import!="java.net.URL"%>

< %@page import!="javax.imageio.ImageIO"%>
< %@page import!="javax.imageio.ImageReader"%>
< %@page import!="javax.imageio.stream.ImageInputStream"%>
< %@page import!="javax.media.jai.JAI"%>
< %@page import!="javax.media.jai.ParameterBlockJAI"%>
< %@page import!="javax.media.jai.PlanarImage"%>

< %@page import!="com.sun.media.imageio.plugins.jpeg2000.J2KImageReadParam"%>

< % String jp2Path = "C:\\Temp\\temp\\154511004210f.jp2"; String jpgPath = "C:\\Temp\\temp\\154511004210f.jpg"; BufferedImage bi = null; try { bi = decode(jp2Path, jpgPath, "JPEG"); } catch (Exception e) { bi = ImageIO.read(new File("C:\\Temp\\noimage.jpg")); } response.setContentType("image/jpeg"); ImageIO.write(bi, "JPEG", response.getOutputStream()); %>

< %! public static BufferedImage decode(String source, String target, String encode) throws IOException { ImageInputStream in = ImageIO.createImageInputStream(new File(source)); ImageReader reader = ImageIO.getImageReaders(in).next(); reader.setInput(in); boolean workaround = true; J2KImageReadParam param = new J2KImageReadParam(); if (workaround) param.setResolution(5); // param.setSourceRegion(new Rectangle(0,0,reader.getWidth(0),reader.getHeight(0))); System.out.println("*******************************************************1"); BufferedImage image = reader.read(0, param); System.out.println("*******************************************************2"); FileOutputStream stream = new FileOutputStream(target); System.out.println("*******************************************************3"); JAI.create("encode", image, stream, encode, null); stream.flush(); stream.close(); return image; } public static void resize(String src, String target, int width, int height) throws IOException { BufferedImage biSrc = javax.imageio.ImageIO.read(new File(src)); if ( width < 1 && height < 1 ) { width = biSrc.getWidth(); height = biSrc.getHeight(); } else if ( width < 1 ) { width = (int)( (height / (float)biSrc.getHeight()) * biSrc.getWidth()); } else if ( height < 1 ) { height = (int)( (width / (float)biSrc.getWidth()) * biSrc.getHeight()) ; } Image targetImage = biSrc.getScaledInstance(width, height, Image.SCALE_SMOOTH); BufferedImage biTarget = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); biTarget.createGraphics().drawImage(targetImage, 0, 0, null); FileOutputStream fos = new FileOutputStream(target); ImageIO.write(biTarget, "JPEG", fos); fos.close(); } %>

java trayicon

import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;


public class TrayTest
{

private TrayIcon trayIcon;

public TrayTest()
{

if (SystemTray.isSupported()) {

Image image = Toolkit.getDefaultToolkit().getImage("c:/temp/0.jpg");

PopupMenu popup = new PopupMenu();
MenuItem defaultItem = new MenuItem("Exit");
defaultItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
popup.add(defaultItem);

trayIcon = new TrayIcon(image, "notepad", popup);
trayIcon.setImageAutoSize(true);
trayIcon.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Runtime.getRuntime().exec("notepad.exe");
} catch (IOException e1) {
trayIcon.displayMessage("Action Event",
"notepad is not found !",
TrayIcon.MessageType.INFO);
}
}
});

try {
SystemTray.getSystemTray().add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
}


} else {
System.err.println("System tray is currently not supported.");
}
}

public static void main(String[] args) throws Exception
{
new TrayTest();
}

}

applet tag

< applet! codebase = "../WEB-INF/classes/" code="ch.sample.worker.AppTest.class" archive="AppTest.jar" width=800 height="600">

signed applet

"C:\Program Files\Java\jdk1.6.0_13\bin\jar" cvf AppTest.jar ch/sample/worker/AppTest.class ch/sample/worker/ViewerClient.class

"C:\Program Files\Java\jdk1.6.0_13\bin\keytool" -keystore C:\temp\.keystore -genkey -dname "cn=test,ou=test o=test, c=KR" -alias TestSign -keypass 123456 -storepass 123456

"C:\Program Files\Java\jdk1.6.0_13\bin\jarsigner" -keystore C:\temp\.keystore -storepass 123456 -keypass 123456 AppTest.jar TestSign

java image resize

public static BufferedImage resizeImage(BufferedImage image, int width, int height) {


float w = new Float(width) ;
float h = new Float(height) ;

if ( w <= 0 && h <= 0 ) {
w = image.getWidth();
h = image.getHeight();
} else if ( w <= 0 ) {
w = image.getWidth() * ( h / image.getHeight() );
} else if ( h <= 0 ) {
h = image.getHeight() * ( w / image.getWidth() );
}

int wi = (int) w;
int he = (int) h;

BufferedImage resizedImage = new BufferedImage(wi,he,BufferedImage.TYPE_INT_RGB);

resizedImage.getGraphics().drawImage(
image.getScaledInstance(wi,he,Image.SCALE_AREA_AVERAGING),
0,0,wi,he,null
);

return resizedImage;

}

Html page to image file

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.JEditorPane;
import javax.swing.SwingUtilities;
import javax.swing.text.Document;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;

import com.lowagie.text.FontFactory;
import com.lowagie.text.pdf.BaseFont;

public abstract class WebImage
{
static class Kit extends HTMLEditorKit
{
public Document createDefaultDocument() {
HTMLDocument doc = (HTMLDocument) super.createDefaultDocument();
doc.setTokenThreshold(Integer.MAX_VALUE);
doc.setAsynchronousLoadPriority(-1);

return doc;
}
}

public static BufferedImage create(String src, int width, int height) {

BufferedImage image = null;
JEditorPane pane = new JEditorPane();
Kit kit = new Kit();
pane.setEditorKit(kit);
pane.setEditable(false);
pane.setMargin(new Insets(0,20,0,20));
pane.setContentType("text/html; charset=UTF-8");
//pane.setFont(new Font("serif",Font.BOLD,20));

try {

System.out.println("-------------"+pane.getFont().getFamily());
System.out.println("-------------"+pane.getFont().getFontName());

pane.setPage(new URL(src));

System.out.println("-----------------------");
System.out.println(pane.getText());
System.out.println("-----------------------");

image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
Container c = new Container();
SwingUtilities.paintComponent(g, pane, c, 0, 0, width, height);
g.dispose();
} catch (Exception e) {
System.out.println(e);
}

return image;
}

public static void main ( String [] args ) {


// TODO Auto-generated method stub
//Call the Web page and convert to Image
BufferedImage ire;
String url="file:///C:\\temp\\test.html";
String path="c:\\temp\\tmp.jpg";
ire = WebImage.create(url, 800, 800);
//You can convert the BufferedImage to
//any format that you wish, jpg I thought was the best format
try{
ImageIO.write(ire, "PNG", new File(path));
System.out.println("complete");
}catch(IOException e){
e.printStackTrace();
}catch(NullPointerException e){
e.printStackTrace();
}catch(IllegalArgumentException e){
e.printStackTrace();
}
}



}

log4j.properties sample

log4j.rootLogger = DEBUG, stdout



log4j.logger.ViewerServer=DEBUG, viewer
log4j.logger.ImageServer=DEBUG, image
log4j.logger.ScanServer=DEBUG, scan
log4j.logger.EaiServer=DEBUG, eai



log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n



log4j.appender.dailyfile.Threshold = DEBUG
log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.File = log/demon.log
log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n



log4j.appender.viewer.Threshold = DEBUG
log4j.appender.viewer = org.apache.log4j.DailyRollingFileAppender
log4j.appender.viewer.File = log/demon1.log
log4j.appender.viewer.layout = org.apache.log4j.PatternLayout
log4j.appender.viewer.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n



log4j.appender.image.Threshold = DEBUG
log4j.appender.image = org.apache.log4j.DailyRollingFileAppender
log4j.appender.image.File = log/demon2.log
log4j.appender.image.layout = org.apache.log4j.PatternLayout
log4j.appender.image.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n



log4j.appender.scan.Threshold = DEBUG
log4j.appender.scan = org.apache.log4j.DailyRollingFileAppender
log4j.appender.scan.File = log/demon3.log
log4j.appender.scan.layout = org.apache.log4j.PatternLayout
log4j.appender.scan.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n



log4j.appender.eai.Threshold = DEBUG
log4j.appender.eai = org.apache.log4j.DailyRollingFileAppender
log4j.appender.eai.File = log/demon4.log
log4j.appender.eai.layout = org.apache.log4j.PatternLayout
log4j.appender.eai.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] - %m%n

shell script for deleting logfile

1. create shell script

#!/bin/ksh
find /logs/log -type f -ctime +2 | xargs -i rm -f {} >/dev/null 2>&1


2. regist crontab

59 23 * * * /var/spool/cron/log_backup.sh >/dev/null 2>&1

Runtime.getRuntime

String [] _cmd1 = { "/bin/sh","-c","pax -r -s ',^,"+destDir+",' -f " + tarFileName };

//String [] _cmd1 = { "cmd","/c","pax -r -s ',^,"+destDir+",' -f " + tarFileName };

String cmd1 = execCommand ( _cmd1 );



public String execCommand(String [] cmd) throws IOException , InterruptedException {

Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();

if (p.exitValue() != 0) {
BufferedReader err = new BufferedReader (new InputStreamReader(p.getErrorStream()));
while (err.ready())
log.info("ERR" + err.readLine());
err.close();
} else {
BufferedReader out = new BufferedReader(new InputStreamReader(p.getInputStream()));
while (out.ready())
log.info("OK" + out.readLine());
out.close();
}

p.destroy();


return "";
}

changing directory when decompressing tar file

pax -r -s ',^dir to delete,dir to decompress,' -f filename.tar

java Regular Expression

java.util.regex.Pattern p = java.util.regex.Pattern.compile("[ ]+$");
java.util.regex.Matcher m = p.matcher(s);
String r = m.replaceAll("");

Oracle unlock

SELECT A.SID,A.SERIAL# , SUBSTR(C.OBJECT_NAME,1,50)
FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C
WHERE A.SID = B.SID
AND B.ID1 = C.OBJECT_ID
AND B.TYPE='TM';



ALTER SYSTEM KILL SESSION '109,18768'

java scheduler

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Properties;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

import org.apache.log4j.Logger;

public class BatchScheduler {

public ScheduledThreadPoolExecutor sch ;

public BatchScheduler() {
super();
sch = new ScheduledThreadPoolExecutor(2);
}

public void start() throws FileNotFoundException, IOException {

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd", new Locale("KOREAN", "KOREA"));
String jobDate = formatter.format(new Date());

// from 0 second , interval 10 second
sch.scheduleAtFixedRate(new SendImage(jobDate), 0, 10, TimeUnit.SECONDS);
sch.scheduleAtFixedRate(new DeleteImage(jobDate), 0, 10, TimeUnit.SECONDS);

}

public void stop() {
sch.shutdown();
}

public static void main(String[] args) {
BatchScheduler t = new BatchScheduler();
try {
t.start();
} catch ( Exception e ) {
e.printStackTrace();
}
}

}