Help in XML encoders
Here is the complete code of my problem.I�ve CADEntityImpl.java extending AtreeObject.java .CadPointImpl.java extending CADEntityImpl.java.CADPointImpl.java uses few constants of IEntitiesConstants.java and Main Program is ServerPartImpl.java. Here is the complete code.
//////////////////////////////////////////////////////////////////////////////////CADEntity.java
// Importing standard java packages/classes
import java.awt.*;
import java.rmi.*;
import java.util.Vector;
import javax.vecmath.AxisAngle4d;
import java.rmi.server.*;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
import java.util.StringTokenizer;
// Importing standard xml packages/classes
import org.xml.sax.SAXException;
import org.xml.sax.*;
import org.xml.sax.helpers.AttributesImpl;
* Top level abstract Entity Class
abstract public class CADEntityImpl extends ATreeObject implements java.io.Serializable,Entity{
//abstract public class CADEntityImpl extends ATreeObject implements java.io.Serializable{
/////////////////////////////////////////////////////////////////////// //INSTANCE VARIABLES
private static final int currentVersion = 1;
private int objectVersion = 1;
/** Entity's base type (Eg: POINT, CURVE, SURFACE, SOLID etc..) */
private int baseType;
/** Entity's type (Eg: POINT, LINE, ARC, SOLID_BOX, B_SPLINE_SURFACE) */
private int type;
private int form = 0;
private Color color = Color.magenta;
private int style = 0;
private String name = null;
private int thickness = 1;
private boolean visible = true;
protected transient long casObj = 0;
private long id = 0;
// CONSTRUCTOR(S)
public CADEntityImpl() throws RemoteException {
public CADEntityImpl(int i) throws RemoteException{
super(i);
/** Get The entity id */
public long getId() {
return id;
/** Get the entity name */
public String getName() {
return name;
/** Get the entity form */
public int getForm() {
return form;
/** Get the entity color */
public Color getColor() {
return color;
/** Get the entity style */
public int getStyle() {
return style;
/** Get the entity thickness */
public int getThickness() {
return thickness;
/** Get the entity visibility */
public boolean isVisible() {
return visible;
/** Get Cascade Obj ref */
public long getCasObj() {
return casObj;
public int getObjectVersion()
return objectVersion;
public int getBaseType()
return baseType;
public int getType()
return type;
public void setBaseType(int m)
this.baseType = m;
public void setType(int m)
this.type = m;
// setter METHODS
/** Set The entity id */
public void setId(long id) {
this.id = id;
if (getName() == null) // If no name is assigned, give default name
setName(IEntitiesConstants.EntityName[getType()] + id);
/** Set the entity form */
public void setForm(int form) {
this.form = form;
/** Set the entity name */
public void setName(String name) {
this.name = name;
System.out.println("We have entered in name");
System.out.println("Name : " + getName());
/** Set the entity color */
public void setColor(Color color) {
this.color = color;
System.out.println("We have entered in colour");
System.out.println("color: " + getColor());
/** Set the entity style */
public void setStyle(int style) {
this.style= style;
/** Set the entity thickness */
public void setThickness(int thickness) {
this.thickness = thickness;
/** Set the entity visibility */
public void setVisible(boolean visible) {
this.visible = visible;
System.out.println("came in visible");
public void setCasObj(long casPtr) {
casObj = casPtr;
public void setObjectVersion(int objectVersion) {
this.objectVersion = objectVersion;
// CLASS : ATreeObject - Associative Entity
// Importing standard java packages/classes
import java.rmi.*;
import java.rmi.server.*;
import java.util.Vector;
import org.xml.sax.SAXException;
import org.xml.sax.*;
import org.xml.sax.helpers.AttributesImpl;
* Top level abstract Entity Class
abstract public class ATreeObject implements java.io.Serializable{
// INSTANCE VARIABLES
private int objectVersion = 1;
private long id = 0;
// CONSTRUCTOR(S)
public ATreeObject() {
public ATreeObject(int i) {
// setter METHODS
public void setObjectVersion(int ov)
this.objectVersion = ov;
// getter METHODS
public int getObjectVersion()
return objectVersion;
// CLASS : CADPointImpl
// Importing standard java packages/classes
import javax.vecmath.*;
import java.awt.*;
import java.rmi.*;
import java.util.Vector;
import org.xml.sax.SAXException;
import org.xml.sax.*;
import org.xml.sax.helpers.AttributesImpl;
* Create an CADPoint
public class CADPointImpl extends CADEntityImpl implements Point
//public class CADPointImpl extends CADEntityImpl
private double x, y, z;
private int pointSize=-1;
private int objectVersion = 3;
public CADPointImpl ()
throws java.rmi.RemoteException {
//setType(IEntitiesConstants.POINT);
// setBaseType(IEntitiesConstants.POINT);
public CADPointImpl(double xp, double yp, double zp)
throws java.rmi.RemoteException {
setType(IEntitiesConstants.POINT);
setBaseType(IEntitiesConstants.POINT);
setColor(new Color(1.00f, 1.00f, 0.00f));
setObjectVersion(1);
x = xp;
y = yp;
z = zp;
// get and set methods for x,y and z
public int getObjectVersion()
return objectVersion;
public void setObjectVersion(int ver)
objectVersion = ver;
public String toString(){
return this.x+" "+this.y+" "+this.z;
// CLASS : IEntitiesConstants
// Importing standard java packages/classes
public interface IEntitiesConstants
public static final int POINT = 1;
// Base Type of each of the Entities defined above. (Fill in
// the base type in this array while new entities are added)
public static final int BaseType[] = {DELETED, // 0
POINT, // 1
public static final String EntityName[] ={
" ", // 0
"pnt", // 1
ServerPartImpl.java
Main program where writeObject is being called
// Importing standard java packages/classes
import java.lang.*;
import java.beans.*;
import java.io.*;
import java.sql.*;
import javax.vecmath.*;
import java.util.*;
import java.util.Vector;
import javax.media.j3d.*;
import java.rmi.*;
import java.awt.*;
import java.lang.Boolean;
import java.lang.Integer;
import java.rmi.server.*;
import javax.swing.*;
import java.util.Date;
import java.text.SimpleDateFormat;
// Importing standard xml packages/classes
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
// Importing incad java packages/classes
* Top level abstract Header Class
public class ServerPartImpl implements java.io.Serializable {
// INSTANCE VARIABLES
public static int ec = 0;
// ENTITY GENERATOR METHODS
public static void main(String args[])
try {
CADPointImpl newPoint = new CADPointImpl(20,60,34);
addEntity(newPoint);
try{
XMLEncoder elc = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("do.xml")));
elc.writeObject(newPoint);
elc.close();
}catch(FileNotFoundException fn)
} catch ( RemoteException re ) {
// METHODS
public static void addEntity(CADEntityImpl ent) {
if(ec == 0)
ec = 1;
else
ec++;
ent.setId(ec);
ent.setVisible(true);
This is my complete code.Now,problem is that when I�m writing the CADPointImpl object only x,y,z,id and at times color is saved.Basetype,Type,visible,name,objectversion properties are not saved.Help me out����..please�.I�ve even tried to write the setfunction codes codes of basetype and type in CADPointImpl.java itself�..and from there calling super�..but even it didn�t helped out.
Well Mr. Dheeraj - nice to know that you are still endevoring to gather knowledge. I guess that is required, especially as you come from a Computer Mechnaic background.
Well then, allow me to give a few bits of wisdom (don't worry they are free). It would rather be greatly appreciated if you could stop embarrasing yourself in public by trying to catch my attention.
If you require my assistance (which I am sure you would be), just write to me :> (I am sure that by now you must have got my mail address by heart). I must assure you that I never turn down pleas for help from commoners like yourself.
However, I can sympathise with you on the count of the pang that you must be feeling while trying to graduate from a mechanic to a Master (which I am sure your limited capability is not permitting you).
However, as is my duty, I always help commoners like you when I so deine to :>
Your Lord
Ironluca
Similar Messages
-
Hi Experts,
I have created the XML report which will generate the output in EXCEL format. I have used the template(rtf) to generate the output. I am facing the critical issue the output file (excel) is giving output with headings( ex: empno,ename,job..)even if there is no record count in the query.
But some times it gives the empty file(excel) without the heading information if the record count is zero.
Could anyone suggest me to solve this error.
Any solution or link will be great help for me. Waiting for your valueable reply
Thanks in Advance,
Ravi.Hi,
Please see if this thread helps.
XML publisher output report in excel format
Re: XML publisher output report in excel format
Regards,
Hussein -
Need help with xml video gallery
Hello everyone
I recently bought a xml video gallery. I'm loading the movie externally into another movie. When the xml gallery loads, it cancels all sounds.
I need to figure out where in the actionscription can i reverse the cancellation of sounds. Can anyone help? if possible, I can email, whomever is willing to help, the xml gallery to see if theres another reason the sound is being canceled.
Also, the sound of the gallery doesn't work til you click the volume scroller.
Here are two parts of actionscript included in the gallery:
part one:
// Import filter classes
import mx.transitions.Tween;
import mx.transitions.easing.*;
// Set flash variables
var xmlFileUrl:String = "playlist.xml";
var auto_play:String = "true";
// Set xml file URL
if (_root.xmlfile) {
xmlFileUrl = _root.xmlfile;
var V_SRC;
var thuArray:Array = new Array();
var currentVideo:Number = 0;
var totalItems;
var numOfItems:Number;
var itemDistance:Number = 120+5;
var itemHeight:Number = 80+2;
var Value:Number = 1;
var boundry:Number = 1;
var ratio:Number = 1;
var diff:Number = 1;
var collectionWidth:Number = 1;
var buffer:Number = 135*2;
this.createEmptyMovieClip("video_txt",this.getNextHighestDepth());
video_txt.createTextField("theText",video_txt.getNextHighestDepth(),0,0,584,36);
video_txt.theText.selectable = false;
video_txt.theText.autoSize = "left";
//The Format
myFormat = new TextFormat();
myFormat.font = _root.font_format;
myFormat.size = _root.font_size;
myFormat.color = _root.font_color;
myFormat.align = "center";
video_txt.theText.setNewTextFormat(myFormat);
// Create a new movieclip to load the thumbs
var thumbLoader:MovieClipLoader = new MovieClipLoader();
var thumbListener:Object = new Object();
thumbLoader.addListener(thumbListener);
thumbListener.onLoadInit = function(target_mc:MovieClip, httpStatus:Number)
new Tween(target_mc, "_alpha", Regular.easeOut, 0, 100, 1, true);
target_mc._parent.preloader_mc._alpha = 0;
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = xmlLoaded;
xml.load(xmlFileUrl);
// Load the xml file into the player
function xmlLoaded(b:Boolean) {
if (b) {
auto_play = this.firstChild.firstChild.attributes.auto_play;
scrollSpeed = parseInt(this.firstChild.firstChild.attributes.scrollSpeed);
totalItems = this.firstChild.firstChild.childNodes;
numOfItems = totalItems.length;
for (j=0; j<numOfItems; j++) {
var i = player_mc.main_mc.collection_mc.attachMovie("mc_Thumb", "thumb_"+j, j);
i._x = itemDistance*j;
thumbLoader.loadClip(totalItems[j].attributes.thumb,i.loader_mc);
i.id = j;
i.videoTitle = totalItems[j].attributes.title;
i.videoUrl = totalItems[j].attributes.src;
// Create an event for thumb rollover
i.onRollOver = iRoll;
i.onRollOut = i.onReleaseOutside=iOut;
i.onRelease = iRelease;
thuArray[j] = i;
// default first video
collectionWidth = player_mc.main_mc.collection_mc._width;
currentVideo = 0;
V_SRC = thuArray[0].videoUrl;
changeVideo();
//scope._alpha = 100;
new Tween(scope, "_alpha", Regular.easeOut, 0, 100, 0.5, true);
else
trace("Error! xml file not loaded");
// onRollOver Events
function iRoll() {
player_mc.mc_title.title_txt.htmlText = totalItems[this.id].attributes.title;
this.light_mc.play();
function iRelease() {
currentVideo = this.id;
changeVideo();
function changeVideo() {
V_SRC = thuArray[currentVideo].videoUrl;
player_mc.loadVideo();
currentThumb();
player_mc.mc_title.title_txt.htmlText = thuArray[currentVideo].videoTitle;
video_txt.theText.text = totalItems[currentVideo].attributes.title;
player_mc.so.getVolume();
player_mc.playStatus = 1;
player_mc.checkStatus();
function nextVideo() {
if (currentVideo<(numOfItems-1)) {
currentVideo++;
} else {
currentVideo = 0;
changeVideo();
function currentThumb() {
for (i=0; i<thuArray.length; i++) {
if (i == currentVideo) {
thuArray[i].enabled = true;
// Mouse movement on rollover
this.onMouseMove = function() {
collectionWidth = player_mc.main_mc.collection_mc._width;
boundry = player_mc.main_mc.area_mc._width;
if ((player_mc.main_mc._ymouse>0) && (player_mc.main_mc._ymouse<itemHeight)) {
if ((player_mc.main_mc._xmouse>0) && (player_mc.main_mc._xmouse<boundry)) {
ratio = player_mc.main_mc._xmouse/boundry;
diff = (collectionWidth-boundry)+buffer;
Value = Math.floor((-ratio)*diff)+(buffer/2);
updateAfterEvent();
this.onEnterFrame = function() {
// Define movement area and speed
if (player_mc.main_mc.collection_mc._width>player_mc.main_mc.area_mc._width) {
player_mc.main_mc.collection_mc._x = Math.round((player_mc.main_mc.collection_mc._x)+((Value-player_mc.main_mc.collection_mc._ x)/scrollSpeed));
if (player_mc.main_mc.collection_mc._x>0) {
player_mc.main_mc.collection_mc._x = 0;
} else if (player_mc.main_mc.collection_mc._x<(player_mc.main_mc.area_mc._width-(player_mc.main_mc. collection_mc._width))) {
player_mc.main_mc.collection_mc._x = Math.round(player_mc.main_mc.area_mc._width-(player_mc.main_mc.collection_mc._width));
} else {
player_mc.main_mc.collection_mc._x = 0;
updateAfterEvent();
part two:
// Define flash variables
var video_url:String = "";
var tempx:Number = this._parent._x;
var tempy:Number = this._parent._y;
var timeCounter:Number = 0;
var timeInSeconds:Number = _root.time_counter;
// Object to listen to onStage Event
videoObj = vid.videoObj;
// Setting up the connection
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
// Buffer time
ns.setBufferTime (10);
videoObj.attachVideo (ns);
function loadVideo () {
video_url = _parent.V_SRC;
trace(video_url);
ns.play (video_url);
function checkStatus()
if (playStatus == 1)
controls_mc.playPause.gotoAndStop("pause");
mc_playAgain._visible = false;
thumbs_out = false;
title_out = false;
else
controls_mc.playPause.gotoAndStop("play");
mc_playAgain._visible = true;
} // end else if
if (so.getVolume() == 0)
controls_mc.mute_mc.gotoAndStop("mute");
else
controls_mc.mute_mc.gotoAndStop("on");
}; // End of the function
mc_playAgain._visible = false;
// Check Status of video
ns.onStatus = function (info)
if (info.code == "NetStream.Buffer.Empty")
mc_buffer._visible = true;
else if (info.code == "NetStream.Buffer.Full")
mc_buffer._visible = false;
else if (info.code == "NetStream.Play.Stop")
ns.seek(0);
if (playStatus == 1)
ns.pause();
playStatus = 0;
else
trace;
} // end else if
mc_playAgain._visible = true;
mc_buffer._visible = false;
thumbs_out = true;
title_out = true;
checkStatus();
} // end else if
// Get info about video
ns.onMetaData = function(infoObject:Object)
FLVduration = infoObject["duration"];
relationshipW = infoObject.height / infoObject.width;
relationshipH = infoObject.width / infoObject.height;
if (Stage["displayState"] == "fullScreen")
largeSize ();
else
regularSize ();
if (_parent.auto_play == "false")
ns.seek(0);
if (playStatus == 1)
ns.pause();
playStatus = 0;
mc_buffer._visible = false;
controls_mc.playPause.gotoAndStop("play");
mc_playAgain._visible = true;
thumbs_out = true;
title_out = true;
_parent.auto_play = "true";
}// end else if
var videoInterval = setInterval(videoStatus, 100);
var amountLoaded;
var duration;
// videoStatus on load Event
function videoStatus()
amountLoaded = ns.bytesLoaded / ns.bytesTotal;
controls_mc.mc_progress.mc_buff._width = amountLoaded * 250;
controls_mc.mc_progress.mc_played._x = ns.time / duration * 250;
controls_mc.mc_progress.mc_played._xscale = Math.round(ns.time*100/FLVduration);
}; // End of the function
function scrubIt()
ns.seek(Math.floor(controls_mc.mc_progress.mc_played._x / 250 * duration));
}; // End of the function
// video time
var time_interval:Number = setInterval(checkTime, 500, ns);
function checkTime(ns:NetStream) {
//current time
var ns_seconds:Number = ns.time;
var minutes:Number = Math.floor(ns_seconds/60);
var seconds = Math.floor(ns_seconds%60);
sec = seconds;
min = minutes;
if (sec<10) {
sec = "0"+sec;
if (min<10) {
min = "0"+min;
controls_mc.time_txt.time_1.text = min+":"+sec;
//total time
var minutes2:Number = Math.floor(FLVduration/60);
var seconds2 = Math.floor(FLVduration%60);
sec2 = seconds2;
min2 = minutes2;
if (sec2<10) {
sec2 = "0"+sec2;
if (min2<10) {
min2 = "0"+min2;
controls_mc.time_txt.time_2.text = min2+":"+sec2;
if (controls_mc.time_txt.time_2.text == "NaN:NaN") {
controls_mc.time_txt.time_2.text = "00:00";
setStage ();
// Object to listen onStage Event
var stageL:Object = new Object ();
// function respnsible for content alignment
function setStage ()
if (Stage["displayState"] == "fullScreen") {
tempx = this._parent._x;
tempy = this._parent._y;
this._parent._x = 0;
this._parent._y = 0;
vidBg_mc._x = 0;
vidBg_mc._y = 0;
mc_title._x = 0;
mc_title._y = -30;
slide_me._x = 0;
slide_me._y = 0;
vidBg_mc._width = Stage.width;
vidBg_mc._height = Stage.height;
mc_title._width = Stage.width;
mc_title._height = Stage.height / 20;
slide_me._width = Stage.width;
slide_me._height = Stage.height / 20;
vid._x = vid._y = 0;
largeSize ();
controls_mc._x = Math.round ((Stage.width / 2) - (controls_mc._width / 2));
controls_mc._y = Math.round (Stage.height - 36);
mc_playAgain._x = Math.round ((Stage.width / 2) - (mc_playAgain._width / 2));
mc_playAgain._y = Math.round (Stage.height - 572);
thumbs_mc._x = Math.round ((Stage.width / 2) - (thumbs_mc._width / 2));
thumbs_mc._y = Math.round (Stage.height - 115);
main_mc._x = Math.round ((Stage.width / 2) - (controls_mc._width / 2));;
hide_mc.onEnterFrame = function () {
timeCounter = timeCounter + 1;
if (timeCounter >= timeInSeconds * 30) {
timeCounter = 0;
controls_mc._alpha = 0;
this.onMouseMove = function () {
timeCounter = 0;
controls_mc._alpha = 100;
else
delete hide_mc.onEnterFrame;
delete this.onMouseMove;
controls_mc._alpha = 100;
this._parent._x = tempx;
this._parent._y = tempy;
vidBg_mc._width = 600;
vidBg_mc._height = 360;
mc_title._width = 600;
mc_title._height = 30;
slide_me._width = 600;
slide_me._height = 30;
vidBg_mc._x = vid._x = 0;
vidBg_mc._y = vid._y = 35;
mc_title._x = vid._x = 0;
mc_title._y = vid._x = -30;
slide_me._x = vid._x = 0;
slide_me._y = vid._y = 35;
regularSize ();
controls_mc._x = 0;
controls_mc._y = 395;
mc_playAgain._x = 243;
mc_playAgain._y = 158;
thumbs_mc._x = 0;
thumbs_mc._y = 316;
main_mc._x = 0;
main_mc._y = 406;
mc_buffer._x = Math.round (vidBg_mc._x + (vidBg_mc._width / 2));
mc_buffer._y = Math.round (vidBg_mc._y + (vidBg_mc._height / 2));
// to apply when stage (browser window) is resized or modified
stageL.onResize = function () {
setStage ();
// attaching object to the stage
Stage.addListener (stageL);
MovieClip.prototype.slide = function(yPos) {
this._y -= (this._y-yPos)/5;
// tilte actions
mc_title.onEnterFrame = function()
if (Stage["displayState"] == "normal" && title_out == false)
this.slide(5);
else if (Stage["displayState"] == "normal" && title_out == true)
this.slide(35);
if (Stage["displayState"] == "fullScreen" && title_out == false)
this._y -= (this._y+106)/5;
else if (Stage["displayState"] == "fullScreen" && title_out == true)
this.slide(0);
// thumbs actions
main_mc.onEnterFrame = function()
if (Stage["displayState"] == "normal" && thumbs_out == false)
this.slide(406);
else if (Stage["displayState"] == "normal" && thumbs_out == true)
this.slide(299);
if (Stage["displayState"] == "fullScreen" && thumbs_out == false)
this._y = Math.round (Stage.height - 0);
else if (Stage["displayState"] == "fullScreen" && thumbs_out == true)
this._y = Math.round (Stage.height - 133);
// Playlist button
controls_mc.playlist_mc.onRollOver = function ()
this.gotoAndStop("playlistOver");
controls_mc.playlist_mc.onRollOut = controls_mc.playlist_mc.onReleaseOutside = function ()
this.gotoAndStop("playlist");
// Toggle playlist button
controls_mc.playlist_mc.onRelease = function ()
if (thumbs_out == false)
thumbs_out = true;
title_out = true;
else if (thumbs_out == true)
thumbs_out = false;
title_out = false;
} // end if else
// Define hit area for playPause button
vid.onPress = controls_mc.playPause.onRelease = function ()
ns.pause();
if (playStatus == 1)
controls_mc.playPause.gotoAndStop("play")
playStatus = 0;
checkStatus();
else if (playStatus == 0)
controls_mc.playPause.gotoAndStop("pause");
playStatus = 1;
checkStatus();
// playPause button
controls_mc.playPause.onRollOver = function ()
if (playStatus == 1)
this.gotoAndStop("pauseOver");
else
this.gotoAndStop("playOver");
} // end else if
controls_mc.playPause.onRollOut = controls_mc.playPause.onReleaseOutside = function ()
if (playStatus == 1)
this.gotoAndStop("pause");
else
this.gotoAndStop("play");
} // end else if
// Toggle playPause button
controls_mc.playPause.onRelease = function ()
ns.pause();
if (playStatus == 1)
this.gotoAndStop("play");
playStatus = 0;
checkStatus();
else if (playStatus == 0)
this.gotoAndStop("pause");
playStatus = 1;
checkStatus();
controls_mc.skip_mc.onRollOver = function ()
this.gotoAndStop("skipOver");
controls_mc.skip_mc.onRollOut = controls_mc.skip_mc.onReleaseOutside = function ()
this.gotoAndStop("skip");
controls_mc.skip_mc.onRelease = function ()
_parent.nextVideo()
// Play Again button
mc_playAgain.onRollOver = function ()
this.gotoAndStop("playAgainOver");
mc_playAgain.onRollOut = mc_playAgain.onReleaseOutside = function ()
this.gotoAndStop("playAgain");
// Toggle Play Again button
mc_playAgain.onRelease = function ()
this._visible = false;
ns.pause();
playStatus = 1;
checkStatus();
// make the seek bar clickable
controls_mc.mc_progress.mc_buff.onPress = function()
xpos = controls_mc.mc_progress._xmouse;
percent = Math.round(xpos/controls_mc.mc_progress._width*100);
seekTime = percent/100*FLVduration;
seekTime = Math.round(seekTime*100)/100;
ns.seek(seekTime);
// Set volume level
var s:Sound = new Sound();
s.setVolume(_root.volume_value);
controls_mc.mc_soundLevel.mc_volume._xscale = _root.volume_value;
// Volume control
controls_mc.mc_soundLevel.onPress = function()
volumeTo = (this._xmouse / this._width)*100;
this.mc_volume._xscale = volumeTo;
s.setVolume(volumeTo);
// Volume
_parent.createEmptyMovieClip("vSound", _parent.getNextHighestDepth());
vSound.attachAudio(ns);
var so = new Sound(vSound);
so.setVolume(_root.volume_value);
// Mute button
controls_mc.mute_mc.onRollOver = function ()
if (so.getVolume() >= 1)
this.gotoAndStop("onOver");
else
this.gotoAndStop("muteOver");
} // end else if
controls_mc.mute_mc.onRollOut = controls_mc.mute_mc.onReleaseOutside = function ()
if (so.getVolume() >= 1)
this.gotoAndStop("on");
else
this.gotoAndStop("mute");
} // end else if
// Toggle mute button
controls_mc.mute_mc.onRelease = function ()
if (so.getVolume() >= 1)
controls_mc.mc_soundLevel.mc_volume._xscale = 0;
so.setVolume(0);
this.gotoAndStop("muteOver");
else
controls_mc.mc_soundLevel.mc_volume._xscale = 70;
so.setVolume(_root.volume_value);
this.gotoAndStop("onOver");
} // end else if
// Resize video proportionaly
function regularSize ()
videoObj._width = 600;
videoObj._height = videoObj._width * relationshipW;
if (videoObj._height > 360)
videoObj._height = 360;
videoObj._width = videoObj._height * relationshipH;
videoObj.smoothing = true;
//var scale:Number;
videoObj._x = (600 - videoObj._width) / 2;
videoObj._y = (360 - videoObj._height) / 2;
function largeSize ()
videoObj._width = Stage.width;
videoObj._height = videoObj._width * relationshipW;
if (videoObj._height > Stage.height)
videoObj._height = Stage.height;
videoObj._width = videoObj._height * relationshipH;
videoObj.smoothing = true;
//var scale:Number;
videoObj._x = (Stage.width - videoObj._width) / 2;
videoObj._y = (Stage.height - videoObj._height) / 2;
// Fullscreen button
controls_mc.fullscreen_mc.onRollOver = function ()
if (Stage["displayState"] == "normal")
this.gotoAndStop("fullOver");
else
this.gotoAndStop("fullCloseOver");
} // end else if
controls_mc.fullscreen_mc.onRollOut = controls_mc.fullscreen_mc.onReleaseOutside = function ()
if (Stage["displayState"] == "normal")
this.gotoAndStop("full");
else
this.gotoAndStop("fullClose");
} // end else if
// Toggle fullscreen button
controls_mc.fullscreen_mc.onRelease = function ()
if (Stage["displayState"] == "normal")
Stage["displayState"] = "fullscreen";
_parent.video_txt.theText._visible = false;
else
Stage["displayState"] = "normal";
_parent.video_txt.theText._visible = true;if you mean sound works well when the gallery is tested without being loaded into another swf but fails when loaded, change the highlighted line:
// Import filter classes
import mx.transitions.Tween;
import mx.transitions.easing.*;
// Set flash variables
var xmlFileUrl:String = "playlist.xml";
var auto_play:String = "true";
// Set xml file URL
if (_root.xmlfile) {
xmlFileUrl = _root.xmlfile;
var V_SRC;
var thuArray:Array = new Array();
var currentVideo:Number = 0;
var totalItems;
var numOfItems:Number;
var itemDistance:Number = 120+5;
var itemHeight:Number = 80+2;
var Value:Number = 1;
var boundry:Number = 1;
var ratio:Number = 1;
var diff:Number = 1;
var collectionWidth:Number = 1;
var buffer:Number = 135*2;
this.createEmptyMovieClip("video_txt",this.getNextHighestDepth());
video_txt.createTextField("theText",video_txt.getNextHighestDepth(),0,0,584,36);
video_txt.theText.selectable = false;
video_txt.theText.autoSize = "left";
//The Format
myFormat = new TextFormat();
myFormat.font = _root.font_format;
myFormat.size = _root.font_size;
myFormat.color = _root.font_color;
myFormat.align = "center";
video_txt.theText.setNewTextFormat(myFormat);
// Create a new movieclip to load the thumbs
var thumbLoader:MovieClipLoader = new MovieClipLoader();
var thumbListener:Object = new Object();
thumbLoader.addListener(thumbListener);
thumbListener.onLoadInit = function(target_mc:MovieClip, httpStatus:Number)
new Tween(target_mc, "_alpha", Regular.easeOut, 0, 100, 1, true);
target_mc._parent.preloader_mc._alpha = 0;
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = xmlLoaded;
xml.load(xmlFileUrl);
// Load the xml file into the player
function xmlLoaded(b:Boolean) {
if (b) {
auto_play = this.firstChild.firstChild.attributes.auto_play;
scrollSpeed = parseInt(this.firstChild.firstChild.attributes.scrollSpeed);
totalItems = this.firstChild.firstChild.childNodes;
numOfItems = totalItems.length;
for (j=0; j<numOfItems; j++) {
var i = player_mc.main_mc.collection_mc.attachMovie("mc_Thumb", "thumb_"+j, j);
i._x = itemDistance*j;
thumbLoader.loadClip(totalItems[j].attributes.thumb,i.loader_mc);
i.id = j;
i.videoTitle = totalItems[j].attributes.title;
i.videoUrl = totalItems[j].attributes.src;
// Create an event for thumb rollover
i.onRollOver = iRoll;
i.onRollOut = i.onReleaseOutside=iOut;
i.onRelease = iRelease;
thuArray[j] = i;
// default first video
collectionWidth = player_mc.main_mc.collection_mc._width;
currentVideo = 0;
V_SRC = thuArray[0].videoUrl;
changeVideo();
//scope._alpha = 100;
new Tween(scope, "_alpha", Regular.easeOut, 0, 100, 0.5, true);
else
trace("Error! xml file not loaded");
// onRollOver Events
function iRoll() {
player_mc.mc_title.title_txt.htmlText = totalItems[this.id].attributes.title;
this.light_mc.play();
function iRelease() {
currentVideo = this.id;
changeVideo();
function changeVideo() {
V_SRC = thuArray[currentVideo].videoUrl;
player_mc.loadVideo();
currentThumb();
player_mc.mc_title.title_txt.htmlText = thuArray[currentVideo].videoTitle;
video_txt.theText.text = totalItems[currentVideo].attributes.title;
player_mc.so.getVolume();
player_mc.playStatus = 1;
player_mc.checkStatus();
function nextVideo() {
if (currentVideo<(numOfItems-1)) {
currentVideo++;
} else {
currentVideo = 0;
changeVideo();
function currentThumb() {
for (i=0; i<thuArray.length; i++) {
if (i == currentVideo) {
thuArray[i].enabled = true;
// Mouse movement on rollover
this.onMouseMove = function() {
collectionWidth = player_mc.main_mc.collection_mc._width;
boundry = player_mc.main_mc.area_mc._width;
if ((player_mc.main_mc._ymouse>0) && (player_mc.main_mc._ymouse<itemHeight)) {
if ((player_mc.main_mc._xmouse>0) && (player_mc.main_mc._xmouse<boundry)) {
ratio = player_mc.main_mc._xmouse/boundry;
diff = (collectionWidth-boundry)+buffer;
Value = Math.floor((-ratio)*diff)+(buffer/2);
updateAfterEvent();
this.onEnterFrame = function() {
// Define movement area and speed
if (player_mc.main_mc.collection_mc._width>player_mc.main_mc.area_mc._width) {
player_mc.main_mc.collection_mc._x = Math.round((player_mc.main_mc.collection_mc._x)+((Value-player_mc.main_mc.colle ction_mc._x)/scrollSpeed));
if (player_mc.main_mc.collection_mc._x>0) {
player_mc.main_mc.collection_mc._x = 0;
} else if (player_mc.main_mc.collection_mc._x<(player_mc.main_mc.area_mc._width-(player_m c.main_mc.collection_mc._width))) {
player_mc.main_mc.collection_mc._x = Math.round(player_mc.main_mc.area_mc._width-(player_mc.main_mc.collection_mc._w idth));
} else {
player_mc.main_mc.collection_mc._x = 0;
updateAfterEvent();
part two:
// Define flash variables
var video_url:String = "";
var tempx:Number = this._parent._x;
var tempy:Number = this._parent._y;
var timeCounter:Number = 0;
var timeInSeconds:Number = _root.time_counter;
// Object to listen to onStage Event
videoObj = vid.videoObj;
// Setting up the connection
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
// Buffer time
ns.setBufferTime (10);
videoObj.attachVideo (ns);
function loadVideo () {
video_url = _parent.V_SRC;
trace(video_url);
ns.play (video_url);
function checkStatus()
if (playStatus == 1)
controls_mc.playPause.gotoAndStop("pause");
mc_playAgain._visible = false;
thumbs_out = false;
title_out = false;
else
controls_mc.playPause.gotoAndStop("play");
mc_playAgain._visible = true;
} // end else if
if (so.getVolume() == 0)
controls_mc.mute_mc.gotoAndStop("mute");
else
controls_mc.mute_mc.gotoAndStop("on");
}; // End of the function
mc_playAgain._visible = false;
// Check Status of video
ns.onStatus = function (info)
if (info.code == "NetStream.Buffer.Empty")
mc_buffer._visible = true;
else if (info.code == "NetStream.Buffer.Full")
mc_buffer._visible = false;
else if (info.code == "NetStream.Play.Stop")
ns.seek(0);
if (playStatus == 1)
ns.pause();
playStatus = 0;
else
trace;
} // end else if
mc_playAgain._visible = true;
mc_buffer._visible = false;
thumbs_out = true;
title_out = true;
checkStatus();
} // end else if
// Get info about video
ns.onMetaData = function(infoObject:Object)
FLVduration = infoObject["duration"];
relationshipW = infoObject.height / infoObject.width;
relationshipH = infoObject.width / infoObject.height;
if (Stage["displayState"] == "fullScreen")
largeSize ();
else
regularSize ();
if (_parent.auto_play == "false")
ns.seek(0);
if (playStatus == 1)
ns.pause();
playStatus = 0;
mc_buffer._visible = false;
controls_mc.playPause.gotoAndStop("play");
mc_playAgain._visible = true;
thumbs_out = true;
title_out = true;
_parent.auto_play = "true";
}// end else if
var videoInterval = setInterval(videoStatus, 100);
var amountLoaded;
var duration;
// videoStatus on load Event
function videoStatus()
amountLoaded = ns.bytesLoaded / ns.bytesTotal;
controls_mc.mc_progress.mc_buff._width = amountLoaded * 250;
controls_mc.mc_progress.mc_played._x = ns.time / duration * 250;
controls_mc.mc_progress.mc_played._xscale = Math.round(ns.time*100/FLVduration);
}; // End of the function
function scrubIt()
ns.seek(Math.floor(controls_mc.mc_progress.mc_played._x / 250 * duration));
}; // End of the function
// video time
var time_interval:Number = setInterval(checkTime, 500, ns);
function checkTime(ns:NetStream) {
//current time
var ns_seconds:Number = ns.time;
var minutes:Number = Math.floor(ns_seconds/60);
var seconds = Math.floor(ns_seconds%60);
sec = seconds;
min = minutes;
if (sec<10) {
sec = "0"+sec;
if (min<10) {
min = "0"+min;
controls_mc.time_txt.time_1.text = min+":"+sec;
//total time
var minutes2:Number = Math.floor(FLVduration/60);
var seconds2 = Math.floor(FLVduration%60);
sec2 = seconds2;
min2 = minutes2;
if (sec2<10) {
sec2 = "0"+sec2;
if (min2<10) {
min2 = "0"+min2;
controls_mc.time_txt.time_2.text = min2+":"+sec2;
if (controls_mc.time_txt.time_2.text == "NaN:NaN") {
controls_mc.time_txt.time_2.text = "00:00";
setStage ();
// Object to listen onStage Event
var stageL:Object = new Object ();
// function respnsible for content alignment
function setStage ()
if (Stage["displayState"] == "fullScreen") {
tempx = this._parent._x;
tempy = this._parent._y;
this._parent._x = 0;
this._parent._y = 0;
vidBg_mc._x = 0;
vidBg_mc._y = 0;
mc_title._x = 0;
mc_title._y = -30;
slide_me._x = 0;
slide_me._y = 0;
vidBg_mc._width = Stage.width;
vidBg_mc._height = Stage.height;
mc_title._width = Stage.width;
mc_title._height = Stage.height / 20;
slide_me._width = Stage.width;
slide_me._height = Stage.height / 20;
vid._x = vid._y = 0;
largeSize ();
controls_mc._x = Math.round ((Stage.width / 2) - (controls_mc._width / 2));
controls_mc._y = Math.round (Stage.height - 36);
mc_playAgain._x = Math.round ((Stage.width / 2) - (mc_playAgain._width / 2));
mc_playAgain._y = Math.round (Stage.height - 572);
thumbs_mc._x = Math.round ((Stage.width / 2) - (thumbs_mc._width / 2));
thumbs_mc._y = Math.round (Stage.height - 115);
main_mc._x = Math.round ((Stage.width / 2) - (controls_mc._width / 2));;
hide_mc.onEnterFrame = function () {
timeCounter = timeCounter + 1;
if (timeCounter >= timeInSeconds * 30) {
timeCounter = 0;
controls_mc._alpha = 0;
this.onMouseMove = function () {
timeCounter = 0;
controls_mc._alpha = 100;
else
delete hide_mc.onEnterFrame;
delete this.onMouseMove;
controls_mc._alpha = 100;
this._parent._x = tempx;
this._parent._y = tempy;
vidBg_mc._width = 600;
vidBg_mc._height = 360;
mc_title._width = 600;
mc_title._height = 30;
slide_me._width = 600;
slide_me._height = 30;
vidBg_mc._x = vid._x = 0;
vidBg_mc._y = vid._y = 35;
mc_title._x = vid._x = 0;
mc_title._y = vid._x = -30;
slide_me._x = vid._x = 0;
slide_me._y = vid._y = 35;
regularSize ();
controls_mc._x = 0;
controls_mc._y = 395;
mc_playAgain._x = 243;
mc_playAgain._y = 158;
thumbs_mc._x = 0;
thumbs_mc._y = 316;
main_mc._x = 0;
main_mc._y = 406;
mc_buffer._x = Math.round (vidBg_mc._x + (vidBg_mc._width / 2));
mc_buffer._y = Math.round (vidBg_mc._y + (vidBg_mc._height / 2));
// to apply when stage (browser window) is resized or modified
stageL.onResize = function () {
setStage ();
// attaching object to the stage
Stage.addListener (stageL);
MovieClip.prototype.slide = function(yPos) {
this._y -= (this._y-yPos)/5;
// tilte actions
mc_title.onEnterFrame = function()
if (Stage["displayState"] == "normal" && title_out == false)
this.slide(5);
else if (Stage["displayState"] == "normal" && title_out == true)
this.slide(35);
if (Stage["displayState"] == "fullScreen" && title_out == false)
this._y -= (this._y+106)/5;
else if (Stage["displayState"] == "fullScreen" && title_out == true)
this.slide(0);
// thumbs actions
main_mc.onEnterFrame = function()
if (Stage["displayState"] == "normal" && thumbs_out == false)
this.slide(406);
else if (Stage["displayState"] == "normal" && thumbs_out == true)
this.slide(299);
if (Stage["displayState"] == "fullScreen" && thumbs_out == false)
this._y = Math.round (Stage.height - 0);
else if (Stage["displayState"] == "fullScreen" && thumbs_out == true)
this._y = Math.round (Stage.height - 133);
// Playlist button
controls_mc.playlist_mc.onRollOver = function ()
this.gotoAndStop("playlistOver");
controls_mc.playlist_mc.onRollOut = controls_mc.playlist_mc.onReleaseOutside = function ()
this.gotoAndStop("playlist");
// Toggle playlist button
controls_mc.playlist_mc.onRelease = function ()
if (thumbs_out == false)
thumbs_out = true;
title_out = true;
else if (thumbs_out == true)
thumbs_out = false;
title_out = false;
} // end if else
// Define hit area for playPause button
vid.onPress = controls_mc.playPause.onRelease = function ()
ns.pause();
if (playStatus == 1)
controls_mc.playPause.gotoAndStop("play")
playStatus = 0;
checkStatus();
else if (playStatus == 0)
controls_mc.playPause.gotoAndStop("pause");
playStatus = 1;
checkStatus();
// playPause button
controls_mc.playPause.onRollOver = function ()
if (playStatus == 1)
this.gotoAndStop("pauseOver");
else
this.gotoAndStop("playOver");
} // end else if
controls_mc.playPause.onRollOut = controls_mc.playPause.onReleaseOutside = function ()
if (playStatus == 1)
this.gotoAndStop("pause");
else
this.gotoAndStop("play");
} // end else if
// Toggle playPause button
controls_mc.playPause.onRelease = function ()
ns.pause();
if (playStatus == 1)
this.gotoAndStop("play");
playStatus = 0;
checkStatus();
else if (playStatus == 0)
this.gotoAndStop("pause");
playStatus = 1;
checkStatus();
controls_mc.skip_mc.onRollOver = function ()
this.gotoAndStop("skipOver");
controls_mc.skip_mc.onRollOut = controls_mc.skip_mc.onReleaseOutside = function ()
this.gotoAndStop("skip");
controls_mc.skip_mc.onRelease = function ()
_parent.nextVideo()
// Play Again button
mc_playAgain.onRollOver = function ()
this.gotoAndStop("playAgainOver");
mc_playAgain.onRollOut = mc_playAgain.onReleaseOutside = function ()
this.gotoAndStop("playAgain");
// Toggle Play Again button
mc_playAgain.onRelease = function ()
this._visible = false;
ns.pause();
playStatus = 1;
checkStatus();
// make the seek bar clickable
controls_mc.mc_progress.mc_buff.onPress = function()
xpos = controls_mc.mc_progress._xmouse;
percent = Math.round(xpos/controls_mc.mc_progress._width*100);
seekTime = percent/100*FLVduration;
seekTime = Math.round(seekTime*100)/100;
ns.seek(seekTime);
// Set volume level
var s:Sound = new Sound(this);
s.setVolume(_root.volume_value);
controls_mc.mc_soundLevel.mc_volume._xscale = _root.volume_value;
// Volume control
controls_mc.mc_soundLevel.onPress = function()
volumeTo = (this._xmouse / this._width)*100;
this.mc_volume._xscale = volumeTo;
s.setVolume(volumeTo);
// Volume
_parent.createEmptyMovieClip("vSound", _parent.getNextHighestDepth());
vSound.attachAudio(ns);
var so = new Sound(vSound);
so.setVolume(_root.volume_value);
// Mute button
controls_mc.mute_mc.onRollOver = function ()
if (so.getVolume() >= 1)
this.gotoAndStop("onOver");
else
this.gotoAndStop("muteOver");
} // end else if
controls_mc.mute_mc.onRollOut = controls_mc.mute_mc.onReleaseOutside = function ()
if (so.getVolume() >= 1)
this.gotoAndStop("on");
else
this.gotoAndStop("mute");
} // end else if
// Toggle mute button
controls_mc.mute_mc.onRelease = function ()
if (so.getVolume() >= 1)
controls_mc.mc_soundLevel.mc_volume._xscale = 0;
so.setVolume(0);
this.gotoAndStop("muteOver");
else
controls_mc.mc_soundLevel.mc_volume._xscale = 70;
so.setVolume(_root.volume_value);
this.gotoAndStop("onOver");
} // end else if
// Resize video proportionaly
function regularSize ()
videoObj._width = 600;
videoObj._height = videoObj._width * relationshipW;
if (videoObj._height > 360)
videoObj._height = 360;
videoObj._width = videoObj._height * relationshipH;
videoObj.smoothing = true;
//var scale:Number;
videoObj._x = (600 - videoObj._width) / 2;
videoObj._y = (360 - videoObj._height) / 2;
function largeSize ()
videoObj._width = Stage.width;
videoObj._height = videoObj._width * relationshipW;
if (videoObj._height > Stage.height)
videoObj._height = Stage.height;
videoObj._width = videoObj._height * relationshipH;
videoObj.smoothing = true;
//var scale:Number;
videoObj._x = (Stage.width - videoObj._width) / 2;
videoObj._y = (Stage.height - videoObj._height) / 2;
// Fullscreen button
controls_mc.fullscreen_mc.onRollOver = function ()
if (Stage["displayState"] == "normal")
this.gotoAndStop("fullOver");
else
this.gotoAndStop("fullCloseOver");
} // end else if
controls_mc.fullscreen_mc.onRollOut = controls_mc.fullscreen_mc.onReleaseOutside = function ()
if (Stage["displayState"] == "normal")
this.gotoAndStop("full");
else
this.gotoAndStop("fullClose");
} // end else if
// Toggle fullscreen button
controls_mc.fullscreen_mc.onRelease = function ()
if (Stage["displayState"] == "normal")
Stage["displayState"] = "fullscreen";
_parent.video_txt.theText._visible = false;
else
Stage["displayState"] = "normal";
_parent.video_txt.theText._visible = true; -
I need help with XML Gallery Fade in out transition. somebody please help me :(
I need help with XML Gallery Fade in out transition. somebody please help me
I have my post dont want to duplicate itThe problem doesn't lie with your feed, although it does contain an error - you have given a non-existent sub-category. You need to stick to the categories and sub-categories listed here:
http://www.apple.com/itunes/podcasts/specs.html#categories
Subscribing to your feed from the iTunes Store page work as such, but the episodes throw up an error message. The problem lies with your episode media files: you are trying to stream them. Pasting the URL into a browser produces a download (where it should play the file) of a small file which does not play and in fact is a text file containing (in the case of ep.2) this:
[Reference]
Ref1=http://stream.riverratdoc.com/RiverratDoc/episode2.mp3?MSWMExt=.asf
Ref2=http://70.33.177.247:80/RiverratDoc/episode2.mp3?MSWMExt=.asf
You must provide a direct link to the actual mp3 file. Streaming won't work. The test is that if you paste the URL of the media file (as given in the feed) into the address bar of a browser it should play the file. -
Help needed in XML encoders and decoders
I'm using XMLEncoders and XMLDecoders for storage of java objects. Currently I've tried on simple data types only. But the problem is if I want to operate on the XMLEncoder created file from two different programs, then it is giving errors. In one program I'm executing
XMLEncoder e = new XMLEncoder(new BufferedOutputStream
(new FileOutputStream("polledobjects.xml")));
e.writeObject(...);
e.writeObject(...);
e.close();
and in another program I want to append to append a few more objects in the same polledobjects.xml, so I created another XML encoder object and opened the polledobjects.xml in append mode.
XMLEncoder e1 = new XMLEncoder(new BufferedOutputStream(new
FileOutputStream("polledobjects.xml",true)));
e1.writeObject(...);
e1.writeObject(...);
e1.close();
Now, Decoder works fine till the point it goes thru xml portion created by the first program, but as soon as it reached xml portion created by the second program, it gives the error->
java.lang.ArrayIndexOutOfBoundsException: 2
at java.beans.ObjectHandler.dequeueResult(XMLDecoder.java:272)
at java.beans.XMLDecoder.readObject(XMLDecoder.java:150)
at Convert.main(Convert.java:57)
XML file created is :-
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.2" class="java.beans.XMLDecoder">
<object class="Data_to_Poll">
<void property="active">
<boolean>true</boolean>
</void>
<void property="agent">
<string>192.9.200.151</string>
</void>
</object>
</java>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.2" class="java.beans.XMLDecoder">
<object class="Data_to_Poll">
<void property="active">
<boolean>true</boolean>
</void>
<void property="agent">
<string>192.9.200.151</string>
</void>
</object>
</java>
I know it is giving problems b'cos it is encountering <?xml tag 2 times in the same xml document, but what should I do if I want to append in the same xml file and in the second program nothing more than filename is known...
plz. help me out....In the below code hope "append" method may help u solve ur req.
import java.io.*;
import java.beans.*;
import java.util.*;
public class Convert {
public static void main(String asd[]) {
try{
Convert c = new Convert();
c.encode("source.xml");
c.decode("source.xml");
c.append("source.xml");
}catch(Exception e) {
e.printStackTrace();
public void encode(String fName) throws FileNotFoundException {
XMLEncoder xmlE = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fName)));
xmlE.writeObject(new MyObject());
xmlE.writeObject(new MyObject("Orange","BasketBall"));
xmlE.close();
/*xmlE = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fName,true)));
xmlE.writeObject(new MyObject());
xmlE.close();*/
public void decode(String fName) throws FileNotFoundException {
XMLDecoder xmlD = new XMLDecoder(new BufferedInputStream(new FileInputStream(fName)));
Object obj = xmlD.readObject();
boolean mine= obj instanceof MyObject;
System.out.println(obj+" is : "+mine);
xmlD.close();
public void append(String fName) throws Exception {
XMLDecoder xmlD = new XMLDecoder(new BufferedInputStream(new FileInputStream(fName)));
Vector objs = new Vector();
Object obj = xmlD.readObject();
try{
while(obj !=null){
objs.add(obj);
obj = xmlD.readObject();
}catch(Exception e) {
e.printStackTrace();
if(obj!=null) {
objs.add(obj);
xmlD.close();
XMLEncoder xmlE = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fName)));
int count = objs.size();
for(int i=0;i<count;++i) {
xmlE.writeObject(objs.get(i));
xmlE.writeObject(new MyObject("White","VollyBall"));
xmlE.close(); -
Need help on XML Publisher Template features
Hi,
We have a requirement to develop an Invoice Register report to display the invoices for a period. Details of each Invoice and Amount needs to be displayed in a single line. At the bottom of each page we have to display running total of the Invoices displayed till that page. At the beginning of each page we have to display the total amount of Invoices displayed in the previous page.
We had developed the report using Reports Builder and registered concurrent program with output type as PDF. We are working in Spanish environment (UTF-8 character set). The report is working properly and producing output as required. But Spanish characters appear as junk character on the report. From Metalink Notes 443778.1 and 338990.1, I understand that PDF output in UTF-8 character set is not supported. We need to use XML Publisher to generate the PDF output.
We have developed .rtf template. It is generating PDF output and Spanish characters appearing properly. But we are not able to get the running total at the bottom of each page or total of previous page amounts at the beginning of each page. In the output from Reports Builder, we could use various page level options (like reset at page level, etc.) to achieve the requirement. But in the template generated using .rtf, I do not have such options.
I am not sure if there are advanced features in .rtf template to achieve the requirement. Could anyone please advise me how I can achieve the requirement? It would be great if you could provide me some reference.
Thanks and Regards,
NabenduHi Nabendu.
BI publisher does have the option of showing a running total in PDF format usign a RTF template. If you look up the advanced rtf samples provided with the BI publisher plugin there is one example to show running totals, with the previous page total at the top.
you can find this located on your PC where the Word Plugin is installed. C:\Program Files (x86)\Oracle\BI Publisher\BI Publisher Desktop\samples\RTF templates
replace C:\ with the drive leeter of the drive where your desktop plugin is installed
Hope this Helps,
Domnic -
Need help in xml bursting email bodt contents based on condition
Dear All,
I have a requirement as below.
I am developing a xml publisher report with bursting functionality, i need to set a email body based on some condition, so please help me out how i can set the email body dynamically in xml bursting file.
Note:The email body may be huge. for ex:
Dear ${LINE_MANAGER_POSITION},<br/><br/>
The probationary period for ${FULL_NAME} holding Worker Number ${EMPLOYEE_NUMBER} will end on ${PROBATION_END_DATE}. Please be sure to assess the employee carefully and fill out the attached Probationary Period Report, sign it, and send it to your HR Business Partner ${HR_BP_EMP_NAME} before ${PROB_END_DATE_BEFORE}. <br/><br/>
Please note: <br/>
<ul> <li> The maximum probationary period allowed by UAE labor law is six months starting from the Hire Date. Probation extensions beyond six months are not permitted.</li> </ul>
<ul> <li> During the probationary period, the Employee has the right to end ${GENDER} employment contract with five working days notice period.</li> </ul>
<ul> <li> According to UAE labor law, the Employee is considered a permanent Employee with limited or unlimited contract if ${A_HE_SHE} is not notified that ${A_HE_SHE} is not suitable for the position ${A_HE_SHE} is assigned to. Dubai Petroleum Establishment Human Resources Division will consider the probationary period to be successful if you do not complete and sign the Probationary Period Evaluation form for ${FULL_NAME} before ${PROB_END_DATE_BEFORE}.</li> </ul>
<ul> <li> If the Employee passes the probationary period successfully and is subsequently deemed unsuitable for the assigned Position then the HR disciplinary process prevails.</li> </ul>
For more information on the Employee probationary period process and assessment approaches, please <a href="_http://dullap01/livelink/livelink.exe/open/29695955"> click here </a> or contact your Human Resources Business Partner ${HR_BP_EMP_NAME} at <a>${HR_BP_EMAIL}</a><br/><br/><br/>
Yours sincerely, <br/>
Human Resources Division </font>
Thnaks
Deblogo's should be pulling are the logo's directly embedded in format template?
Suggest you download and use the [Bursting Designer|http://bipublisher.blogspot.com/2009/09/bi-publisher-bursting-designer.html] and review the log file for errors. You will need to change your templates to point locally on your pc.
Ike Wiggins
http://bipublisher.blogspot.com -
i want to know how to parse an xml doc using javax.xml.parsers
i have written a simple ide for java with lots of options and the software would look better if i include xml support.
u can find the code below.
/* Thank you for your interest in viewing the source of Jcom */
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.jar.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.undo.*;
import javax.swing.text.*;
// The main Class.
public class Jcom extends JFrame
JTextArea t=new JTextArea();
JTextField output;
Font f=new Font("SansSerif",Font.PLAIN,13);
int count=0,char_count=0,class_count=0,char_changed=0,recent_compile=0,tabinsert=0;
String curfile,Dir="./",text,file="Untitled",Key_word="",ext="java";
String menucomm[]={"New","Open","Save","Save as","Exit","Cut","Copy","Paste","Select All","Comment","Compile","Run","About","Shortcut List","Undo","Redo","Bookmark"};
File o_file;
OutputStream f1;
MessageWindow mw=new MessageWindow("Console Window.");
protected UndoManager undo = new UndoManager();
static Jcom jc;
StatusBar status;
JProgressBar progress;
displayProgress dp=new displayProgress("Loading in Progress.");
JComboBox jb;
// Constructor
public Jcom(String title) throws Exception
super(title);
setVisible(true);
//setIconImage(new ImageIcon("./images/icon.gif"));
t.setMargin(new Insets(20,30,20,20));
setSize(700,500);
String vers = System.getProperty("java.version");
if(vers.compareTo("1.1.2")>0)
t.setDragEnabled(true); // Works only in version 1.4
t.setAutoscrolls(true);
t.setFont(f);
t.setLineWrap(true);
t.setWrapStyleWord(true);
t.setTabSize(6);
Dimension dim=getToolkit().getScreenSize();
setLocation(dim.width/2-getWidth()/2,dim.height/2-getHeight()/2);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
addWindowListener(new Winlis());
undo.discardAllEdits();
//main() method
public static void main(String arg[]) throws Exception
jc=new Jcom("JCom - The Java IDE.");
jc.addmenu();
jc.addtools();
// Ask for exit
public void askexit()
int ch=2;
if(char_changed==1)
ch=JOptionPane.showOptionDialog(null,"Save Changes you made to "+file+" ?","Confirm",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);
if(ch==0)
save_doc();
System.exit(0);
public boolean save_doc()
try
if(file.equals("Untitled") || file==null)
save_doc_as();
else
String text=t.getText();
byte buf[]=text.getBytes();
o_file=new File(Dir,file);
OutputStream f1=new FileOutputStream(o_file);
f1.write(buf);
f1.close();
char_changed=0;
setTitle(file+" - JCompile");
//setIcon(new ImageIcon("./images/icon.gif");
catch(Exception i)
return false;
output.setText(file+" Total lines : "+t.getLineCount());
return true;
public boolean save_doc_as()
try
FileDialog fd=new FileDialog(this,"Save this document as",FileDialog.SAVE);
fd.setVisible(true);
file=fd.getFile();
if(file==null)
file="Untitled";
return false;
Dir=fd.getDirectory();
text=t.getText();
byte buf[]=text.getBytes();
o_file=new File(Dir,file);
f1=new FileOutputStream(o_file);
f1.write(buf);
f1.close();
setTitle(file+" - JCompile");
char_changed=0;
setTitle(file+" - JCompile");
//setIcon(new ImageIcon("./images/icon.gif");
catch(Exception e)
return false;
output.setText(file+" Total lines : "+t.getLineCount());
return true;
public boolean compileit()
try
if(file.equals("Untitled"))
if(save_doc()==false)
return false;
if(file==null)
return false;
if(char_changed==1)
if(save_doc()==false)
return false;
output.setText("Compiling "+file+" ...");
mw.jt.setText("Compiling "+file+" ..."+"\n");
String comm="Javac.exe "+Dir+file;
Process ps=Runtime.getRuntime().exec(comm);
Runtime.getRuntime().gc();
InputStream textfile=ps.getErrorStream();
DataInputStream dai=new DataInputStream(textfile);
String S=dai.readLine();
int errorcount=0;
while(S != null)
errorcount++;
mw.jt.append(S+"\n");
S=dai.readLine();
if(errorcount==0)
output.setText("Compilation Successful. Alt+v to Run the code.");
else
output.setText("Some Errors/Warnings occured during the compilation.");
mw.setVisible(true);
mw.setTitle("Compilation Results.");
return false;
}// end of try
catch(IOException ie)
JOptionPane.showMessageDialog(null, "Some I/O Error has occured. Please save your file and continue.", "I/O Error.",JOptionPane. ERROR_MESSAGE);
return false;
catch(Exception e)
JOptionPane.showMessageDialog(null, "Exception has occured. Please save your file and continue.", "Exception.",JOptionPane. ERROR_MESSAGE);
return false;
return true;
public void run_program()
try
if(file==null)
return;
if(!mw.isVisible())
mw.setVisible(true);
if(char_changed==1)
if(save_doc()==false)
return;
if(compileit()==false)
return;
mw.jt.setText("\nExecuting "+file+" ..."+"\n");
int pos_dot=file.indexOf('.');
char class_name[]=file.toCharArray();
String class_name_string=new String(class_name,0,pos_dot);
String comm="java "+class_name_string;
Runtime ru=Runtime.getRuntime();
Process ps=ru.exec(comm);
InputStream textfile=ps.getErrorStream();
Runtime.getRuntime().gc();
DataInputStream dai=new DataInputStream(textfile);
String S=dai.readLine();
if(S!=null)
mw.jt.append("\nFollowing Runtime Error has occured.\n");
int errorcount=0;
while(S != null)
errorcount++;
mw.jt.append(S+"\n");
S=dai.readLine();
DataInputStream din=new DataInputStream(ps.getInputStream());
S=din.readLine();
errorcount=0;
while(S != null)
errorcount++;
mw.jt.append(S+"\n");
S=din.readLine();
mw.jt.append("Execution of "+file+" has terminated."+"\n");
output.setText("Execution completed.");
mw.setTitle("Execution Results.");
catch(IOException ie)
JOptionPane.showMessageDialog(null, "Exception has occured. Please save your work and continue. ", "I/O Error",JOptionPane. ERROR_MESSAGE);
return;
catch(Exception e)
JOptionPane.showMessageDialog(null, "Exception has occured. Please save your work and continue. ", "I/O Error",JOptionPane. ERROR_MESSAGE);
return;
public void addtools()
//Adding toolbar
JToolBar toolbar=new JToolBar();
String[] iconfiles={"./images/new.gif","./images/open.gif","./images/save.gif","./images/cut.gif","./images/copy.gif","./images/paste.gif","./images/compile.gif","./images/run.gif"};
jb = new JComboBox();
jb.addActionListener(new bookListen());
String[] butcomm={"New","Open","Save","Cut","Copy","Paste","Compile","Run"};
ImageIcon[] icons=new ImageIcon[iconfiles.length];
JButton[] buttons = new JButton[iconfiles.length];
for(int i=0;i<iconfiles.length;i++)
icons=new ImageIcon(iconfiles[i]);
buttons[i]=new JButton(icons[i]);
buttons[i].addActionListener(new actListen());
buttons[i].setActionCommand(butcomm[i]);
buttons[i].setToolTipText(butcomm[i]);
toolbar.add(buttons[i]);
if(i+1%3==0)
toolbar.addSeparator();
getContentPane().add("North",toolbar);
status=new StatusBar();
getContentPane().add("South",status);
// this adds fonts support to the toolbar
/*JComboBox jc = new JComboBox();
String[] fonts = getToolkit().getFontList();
for (int i = 0; i < fonts.length; i++)
jc.addItem(fonts[i]);
toolbar.add(jc);*/
output=new JTextField(30);
output.setEditable(false);
status.add(output);
status.add(new JLabel("Bookmarks "));
jb.setMaximumRowCount(8);
status.add(jb); //Add bookmark list
validate();
}/* End of addtools*/
public void addmenu()
//Adding menu Bar
JMenuBar mb= new JMenuBar();
setJMenuBar(mb);
JMenuItem new1,open,save,save_as,cut,copy,paste,sel_all,und,red,find,replace,exit,about,compile,check,runit,shortcut_list,bookmark;
// Adding contents for menu bar
JMenu file=new JMenu("File");
JMenu edit=new JMenu("Edit");
JMenu search=new JMenu("Search");
JMenu tools=new JMenu("Tools");
JMenu make=new JMenu("Make");
JMenu help=new JMenu("Help");
new1=new JMenuItem("New");
new1.setToolTipText("Create a new file.");
new1.setIcon(new ImageIcon("./images/new.gif"));
new1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK ));
file.add(new1);
new1.addActionListener(new actListen());
open=new JMenuItem("Open");
open.setToolTipText("Open an existing file.");
open.setIcon(new ImageIcon("./images/open.gif"));
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK ));
file.add(open);
open.addActionListener(new actListen());
save=new JMenuItem("Save");
save.setToolTipText("Save changes.");
save.setIcon(new ImageIcon("./images/save.gif"));
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK ));
file.add(save);
save.addActionListener(new actListen());
save_as=new JMenuItem("Save as");
save_as.setToolTipText("Save changes as.");
file.add(save_as);
save_as.addActionListener(new actListen());
exit=new JMenuItem("Exit");
exit.setToolTipText("Exit.");
exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK ));
file.add(exit);
exit.addActionListener(new actListen());
exit.setIcon(new ImageIcon("./images/exit.gif"));
mb.add(file);
cut=new JMenuItem("Cut");
cut.setToolTipText("Cut selection.");
cut.setIcon(new ImageIcon("./images/cut.gif"));
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK ));
edit.add(cut);
cut.addActionListener(new actListen());
copy=new JMenuItem("Copy");
copy.setToolTipText("Copy selection.");
copy.setIcon(new ImageIcon("./images/copy.gif"));
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK ));
edit.add(copy);
copy.addActionListener(new actListen());
paste=new JMenuItem("Paste");
paste.setToolTipText("Paste from clipboard.");
paste.setIcon(new ImageIcon("./images/paste.gif"));
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK ));
edit.add(paste);
paste.addActionListener(new actListen());
sel_all=new JMenuItem("Select All");
sel_all.setToolTipText("Select all.");
sel_all.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK ));
edit.add(sel_all);
sel_all.addActionListener(new actListen());
und=new JMenuItem("Undo");
und.setToolTipText("Undo.");
und.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK ));
edit.add(und);
und.addActionListener(new actListen());
red=new JMenuItem("Redo");
red.setToolTipText("Redo.");
red.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_MASK ));
edit.add(red);
red.addActionListener(new actListen());
mb.add(edit);
find=new JMenuItem("Find");
search.add(find);
find.setIcon(new ImageIcon("./images/find.gif"));
find.addActionListener(new actListen());
replace=new JMenuItem("Replace");
search.add(replace);
replace.setIcon(new ImageIcon("./images/replace.gif"));
replace.addActionListener(new actListen());
mb.add(search);
JMenuItem tar_file=new JMenuItem("Create Archive");
tools.add(tar_file);
tar_file.addActionListener(new actListen());
JMenuItem docu=new JMenuItem("Create Documentation");
tools.add(docu);
docu.addActionListener(new actListen());
JMenuItem comment=new JMenuItem("Comment");
comment.setToolTipText("Comment Selection.");
tools.add(comment);
comment.addActionListener(new actListen());
bookmark=new JMenuItem("Bookmark");
tools.add(bookmark);
bookmark.addActionListener(new actListen());
mb.add(tools);
compile=new JMenuItem("Compile");
compile.setToolTipText("Compile.");
compile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK ));
make.add(compile);
compile.setIcon(new ImageIcon("./images/compile.gif"));
compile.addActionListener(new actListen());
runit=new JMenuItem("Run");
runit.setToolTipText("Run.");
runit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.ALT_MASK ));
make.add(runit);
runit.setIcon(new ImageIcon("./images/run.gif"));
runit.addActionListener(new actListen());
mb.add(make);
shortcut_list=new JMenuItem("Shortcut List");
help.add(shortcut_list);
shortcut_list.addActionListener(new actListen());
about=new JMenuItem("About");
help.add(about);
about.addActionListener(new actListen());
mb.add(help);
//Register with document listener.
t.getDocument().addDocumentListener(new docListen());
// Register with Undo Listener
t.getDocument().addUndoableEditListener(new UndoHandler());
//Register with Keyboard listener
t.addKeyListener(new keyListen());
JScrollPane scrollpane=new JScrollPane(t);
Container cont=getContentPane();
cont.add(scrollpane);
validate();
}/* End of addmenu */
/* Frame for displaying console outputs */
public class MessageWindow extends JFrame
JTextArea jt;
public MessageWindow(String title)
super(title);
setSize(400,400);
//setIcon(new ImageIcon("./images/icon.gif"));
jt =new JTextArea();
jt.setEditable(false);
JScrollPane scroll=new JScrollPane(jt);
getContentPane().add(scroll);
jt.addKeyListener(new keyListen());
jt.addMouseListener(new mouseListen());
validate();
}//End of console display class
/* Frame for displaying progress bar during an operation */
public class displayProgress extends JFrame
JLabel jl;
public displayProgress(String title)
super(title);
setSize(300,100);
setResizable(false);
removeNotify();
Dimension dim=getToolkit().getScreenSize();
setLocation(dim.width/2-getWidth()/2,dim.height/2-getHeight()/2);
getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER,8,30));
jl=new JLabel("Lines Loaded : ");
progress = new JProgressBar();
progress.setMinimum(0);
progress.setMaximum(45);
getContentPane().add(jl);
getContentPane().add(progress);
validate();
}//End of progress display.
public void addNew() // To add a new Book Mark
String selectedText=t.getSelectedText();
if(selectedText!=null)
jb.addItem(selectedText);
jb.showPopup();
output.setText("Bookmark added.");
public void remove() // To remove a Bookmark
jb.removeAllItems();
/* Book Mark Handler*/
class bookListen implements ActionListener
public void actionPerformed(ActionEvent ae)
String search=(String)jb.getSelectedItem();
if(search!=null)
findString(search);
}//End of class
// Undo Handler
class UndoHandler implements UndoableEditListener
public void undoableEditHappened(UndoableEditEvent e)
undo.addEdit(e.getEdit());
}// undo handler
public class keyListen extends KeyAdapter
KeyStroke ks;
public void keyPressed(KeyEvent ke)
try
ks=KeyStroke.getKeyStrokeForEvent(ke);
String s1=KeyEvent.getKeyModifiersText(ks.getModifiers()); //s1 has modifiers like Ctrl+Alt
String s2=KeyEvent.getKeyText(ks.getKeyCode()); //s2 has key like 'a'
if(s2.equals("Up") || s2.equals("Down") || s2.equals("Left") || s2.equals("Right"))
int chcount=t.getCaretPosition();
int linecount=t.getLineOfOffset(chcount)+1;
output.setText("Character count : "+chcount+" Line Number : "+linecount);
boolean flag=true;
String search;
if(s1.equals("Ctrl+Shift")) // Required
output.setText("Looking for Macro ...");
if(s2.equals("S"))
t.insert("\tSystem.out.println(\"\");",t.getCaretPosition());
output.setText("Macro : Insert System.out.println() method.");
else if(s2.equals("C")) // Create a default constructor
if(file.equals("Untitled"))
flag=save_doc_as();
if(flag)
int pos_dot=file.indexOf('.');
char class_name[]=file.toCharArray();
String class_name_string=new String(class_name,0,pos_dot);
t.insert("public "+class_name_string+"()\n\t{\n\n\t}",t.getCaretPosition());
output.setText("Macro : Insert Default Constructor.");
else if(s2.equals("M"))
t.insert("\tpublic static void main(String arg[])\n\t{\n\n\t}",t.getCaretPosition());
output.setText("Macro : Insert Main method.");
else if(s2.equals("T"))
t.insert("try\n{\n\n}\n\ncatch(Exception e)\n{\n\te.printStackTrace();\n}",t.getCaretPosition());
output.setText("Macro : Insert try-catch block."); }
}// Macro check end ctrl+alt
// Additional check using only alt.
else if(s1.equals("Alt"))
if(s2.equals("F"))
search=mw.jt.getSelectedText();
if(search!=null)
findString(search);
} // Alt check
}//try
catch(Exception e)
output.setText("Cannot find the Error Region.");
}// Function end
}/* End of Keylisten */
public void findString(String search)
try
boolean found=false;
String lineToFind=search;
if(lineToFind==null)
return;
for(int i=0;i<t.getLineCount();i++)
int offset=t.getLineStartOffset(i);
String lineInArea=t.getText(offset,lineToFind.length());
output.setText("Currently Looking ... "+lineInArea);
if(lineInArea.equals(lineToFind))
t.requestFocus();
t.select(offset,offset+lineToFind.length());
output.setText("Required Line Detected.");
found=true;
break;
}//for loop
if(found==false)
output.setText("Cannot find Required Line.");
found=false;
catch(BadLocationException be)
output.setText("Cannot find the Error Region.");
}// end of find error.
//Window Listener
public class Winlis extends WindowAdapter
public void windowClosing(WindowEvent we)
askexit();
//Document Listener
public class docListen implements DocumentListener
public void changedUpdate(DocumentEvent de)
try
char_changed=1;
setTitle(file+" <changed> - JCompile");
//setIcon(new ImageIcon("./images/save.gif");
int chcount=t.getCaretPosition();
int linecount=t.getLineOfOffset(chcount)+1;
output.setText("Character count : "+chcount+" Line Number : "+linecount);
catch(BadLocationException be)
output.setText("Character count : "+t.getCaretPosition());
public void insertUpdate(DocumentEvent de)
try
char_changed=1;
setTitle(file+" <changed> - JCompile");
//setIcon(new ImageIcon("./images/save.gif");
int chcount=t.getCaretPosition();
int linecount=t.getLineOfOffset(chcount)+1;
output.setText("Character count : "+chcount+" Line Number : "+linecount);
catch(BadLocationException be)
output.setText("Character count : "+t.getCaretPosition());
public void removeUpdate(DocumentEvent de)
try
char_changed=1;
setTitle(file+" <changed> - JCompile");
//setIcon(new ImageIcon("./images/save.gif");
int chcount=t.getCaretPosition();
int linecount=t.getLineOfOffset(chcount)+1;
output.setText("Character count : "+chcount+" Line Number : "+linecount);
catch(BadLocationException be)
output.setText("Character count : "+t.getCaretPosition());
}//Document Listener
// Action Listener
public class actListen implements ActionListener
//Action listener
public void actionPerformed(ActionEvent ae)
String str=(String)ae.getActionCommand();
int command_number=0;
for(int i=0;i<20;i++)
if(str.equals(menucomm[i]))
command_number=i;
break;
switch(command_number)
case 0:
if(char_changed==1)
int ch=JOptionPane.showOptionDialog(null,"Save Changes you made to "+file+" ?","Confirm",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);
if(ch==0)
save_doc();
t.setText("");
char_changed=0;
setTitle("Untitled");
file="Untitled";
remove();
undo.discardAllEdits();
break;
case 1:
//open_doc();
int ch=2;
if(char_changed==1)
ch=JOptionPane.showOptionDialog(null,"Save Changes you made to "+file+" ?","Confirm",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);
if(ch==0)
save_doc_as();
t.setText("");
FileDialog fd=new FileDialog(jc,"Open a file",FileDialog.LOAD);
fd.setVisible(true);
file=fd.getFile();
// Support for class files also
int pos_dot=file.indexOf('.');
ext=file.substring(pos_dot+1,file.length());
if(ext.equalsIgnoreCase("class")) // it is a class file
try
Runtime r=Runtime.getRuntime();
String comm="jad.exe -s .java "+file;
r.exec(comm);
file=file.substring(0,pos_dot)+".java";
catch(Exception e)
output.setText("Some error has occured in Decompiling the class file.");
Dir=fd.getDirectory();
if(file!=null)
Thread ofile=new openFile();
ofile.start();
dp.setVisible(false);
remove();
break;
case 2:
// Save
save_doc();
break;
case 3:
save_doc_as();
break;
case 4:
// Exit
askexit();
break;
case 5:
t.cut();
break;
case 6:
t.copy();
break;
case 7:
t.paste();
break;
case 8:
t.selectAll();
break;
case 9: //comment
String otext=t.getSelectedText();
if(otext!=null)
String ntext="/*\n"+otext+"\n*/";
t.replaceSelection(ntext);
break;
case 10:
if(char_changed==1)
save_doc();
output.setText("Compiling "+file+" ...");
compileit();
break;
case 11:
if(char_changed==1)
compileit();
if(file.equals("Untitled"))
save_doc_as();
compileit();
else
output.setText("Executing "+file+" ...");
run_program();
break;
case 12: //about
JOptionPane.showMessageDialog(null, "Jcom - IDE for Java beta 1.0.\nVisit www.geocities.com/prabhus14 for updates.", "About",JOptionPane. INFORMATION_MESSAGE);
break;
case 13: //Short Cut List
mw.setVisible(true);
mw.setTitle("Shortcut keys List.");
mw.jt.setText("Shortcut Keys for Jcom.\nRight now only some of them are implemented.\nIn later versions users can customise these keys(called \"macros\" in Jcom) and can also add new ones!");
mw.jt.append("\nMacros begin with Ctrl+Shift or Alt alone.\n\n");
mw.jt.append("Ctrl+Shift+S\tTo insert System.out.println() method.\n");
mw.jt.append("Ctrl+Shift+C\tTo create the default constructor for your class.\n");
mw.jt.append("Ctrl+Shift+M\tTo insert main() method.\n");
mw.jt.append("Ctrl+Shift+T\tTo insert try-catch block.\n");
mw.jt.append("\nThe following macro is quite different and will differentiate Jcom from any other IDE.\n");
mw.jt.append("\nAfter compiling if you get any errors then the console window will automatically appear with the messages.\n");
mw.jt.append("1. Select the line in the Error Message.(using mouse of course)\n");
mw.jt.append("2. Press Alt+F or Right Click.\n");
mw.jt.append("3. You will see the Error Region selected in your code.\n");
mw.jt.append("Remember you must select right from the beginning of the line.\nRead Readme.html for more guidance.\n");
break;
case 14:
if(undo.canUndo())
undo.undo();
output.setText(undo.getUndoPresentationName());
break;
case 15:
if(undo.canRedo())
undo.redo();
output.setText(undo.getRedoPresentationName());
break;
case 16: //Bookmark
addNew();
break;
}/*End of action listener*/
}//Action Listener
// Mouse Listener
class mouseListen extends MouseAdapter
String search;
public void mouseClicked(MouseEvent me)
String vers = System.getProperty("java.version");
if(vers.compareTo("1.1.2")>0)
if(me.getButton()==3)
search=mw.jt.getSelectedText();
if(search!=null)
findString(search);
}//mouse listener
// A thread for opening file.
protected class openFile extends Thread
openFile()
setPriority(7);
public void run()
try
int count=0;
File fil1=new File(Dir,file);
dp.setVisible(true);
int factor=(int)fil1.length()/45;
int i=1;
FileInputStream textfile=new FileInputStream(fil1);
DataInputStream dai=new DataInputStream(textfile);
String S=dai.readLine();
count+=S.length();
dp.jl.setText("Lines Loaded : "+i++);
if(ext.equals("class"))
t.setText("/* Jcom - IDE for Java.\nVisit www.geocities.com/prabhus14 for updates.\n*/\n");
while(S != null)
if(ext.equals("class"))
if(i>5)
t.append(S+"\n");
else
t.append(S+"\n");
S=dai.readLine();
count+=S.length();
progress.setValue((int)count/factor);
dp.jl.setText("Lines Loaded : "+i++);
}//while
progress.setValue(45);
dp.setVisible(false);
setTitle(file+" - JCompile");
catch(Exception ie)
dp.setVisible(false);
output.setText(file+" Total lines : "+t.getLineCount());
return;
}//End of run
}//End of thread
// A class simulating Status Bar
class StatusBar extends JComponent
public StatusBar()
super();
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
public void paint(Graphics g)
super.paint(g);
}//End of class StatusBar
}/*End of class Jcom*/Hmm well my first reply didn't seem to make it.
I would recommend Castor if you are talking about supporting XML to save your Java Objects. Castor is a great XML-Java data binding tool that I personally love. You can just write a map between the XML and java elements and it can marshal and unmarshal for you. JAXB (Java API fo XML Binding) can do the same thing but you have to build the classes from a schema you can't just supply a map for it (so you might have to rework your classes). If you mean that you want to edit XML directly in the IDE then you might want to look at the DOM (Document Object Model), its memory intensive though. -
Help:UIModel.xml file for ADF Tree with three level depth
Hello,
I am trying to create a DCTree with structure like this:
root....branch1----child11,child12
..........branch2......branch21---child212,child212
............................branch22---child221,child222
Because I can not create more than one binding rule due to the problem that "Add New Rule" button disappears after the first rule is created when I use the tool under Createbinding/Input/Tree to create the DCTree.
Could somebody post or send me a script of the UIModel.xml file of the tree structure above so that I can work around this problem?
Thanks in advance,
DeborahHi,
I haven't test it for more than 3 layers but I have never seen this limitation mantioned anywhere.
I used HGrid and this is my code:
1. UIX file (the relevant part highlighted):
<?xml version = '1.0' encoding = 'windows-1252'?>
<page xmlns="http://xmlns.oracle.com/uix/controller"
xmlns:ui="http://xmlns.oracle.com/uix/ui"
xmlns:data="http://xmlns.oracle.com/uix/ui"
xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
xmlns:html="http://www.w3.org/TR/REC-html40" expressionLanguage="el"
xmlns:myTemplate="test">
<templates xmlns="http://xmlns.oracle.com/uix/ui">
<templateImport source="baseTemplate.uit"/>
</templates>
<content>
<dataScope xmlns="http://xmlns.oracle.com/uix/ui">
<provider>
<!-- Add DataProviders (<data> elements) here -->
</provider>
<contents>
<document>
<metaContainer>
<!-- Set the page title -->
<head title=""/>
</metaContainer>
<contents>
<body>
<contents>
<form name="form0">
<contents>
<myTemplate:baseTmpl title="" xmlns:myTemplate="test">
<contents>
<rowLayout>
<contents>
<link text="Bets View" destination="browseCustBets.do"/>
<spacer width="10" height="10"/>
<link text="Customer Bets" destination="viewCustBets.do"/>
</contents>
</rowLayout>
<rowLayout>
<contents>
<spacer width="10" height="10"/>
</contents>
</rowLayout>
<rowLayout>
<contents>
<hGrid id="hg1" treeData="${uix.data.treeData}" proxy="${uix.eventResult.hGridProxy}">
<columnHeaderData>
<col text="Email"/>
<col text="Bet Date"/>
<col text="ID"/>
<col text="Is Winner"/>
<col text="Amount"/>
<col text="Rate"/>
</columnHeaderData>
<columnHeaderStamp>
<text text="${uix.current.text}"/>
</columnHeaderStamp>
<columnFormats>
<columnFormat columnDataFormat="textFormat" width="140"/>
<columnFormat columnDataFormat="textFormat" width="160"/>
<columnFormat columnDataFormat="textFormat" width="40"/>
<columnFormat columnDataFormat="textFormat" width="70"/>
<columnFormat columnDataFormat="textFormat" width="70"/>
<columnFormat columnDataFormat="textFormat" width="40"/>
</columnFormats>
<contents>
<text text="${uix.current.Email}"/>
<text text="${uix.current.BetDate}"/>
<text text="${uix.current.BetID}"/>
<text text="${uix.current.IsWinner}"/>
<text text="${uix.current.Amount}"/>
<text text="${uix.current.Rate}"/>
</contents>
</hGrid>
</contents>
</rowLayout>
</contents>
<tabs/>
<pageButtons/>
<globalButtons/>
<pageHeader/>
<start/>
<end/>
<about/>
<copyright/>
<privacy/>
<corporateBranding/>
<productBranding/>
</myTemplate:baseTmpl>
<formValue name="${bindings.statetokenid}" value="${bindings.statetoken}" id="_uixState"/>
</contents>
</form>
</contents>
</body>
</contents>
</document>
</contents>
<provider>
<data name="treeData">
<method class="view.CreateTreeData" method="getTreeData"/>
</data>
</provider>
</dataScope>
</content>
<handlers>
<event name="*">
<method class="view.BetDetailsAction" method="doHGridEvent"/>
</event>
</handlers>
</page>
2. CreateTreeData class:
It has a static method getTreeData() that returns a DataObject containing the tree nodes. This methode is mentiond in <provider> node in UIX/XML.
package view;
import java.util.Enumeration;
import model.*;
import oracle.cabo.servlet.BajaContext;
import oracle.cabo.servlet.ServletConstants;
import oracle.cabo.servlet.ui.BajaRenderingContext;
import oracle.cabo.ui.RenderingContext;
import oracle.cabo.ui.UIConstants;
import oracle.cabo.ui.data.DataObject;
import oracle.cabo.ui.data.servlet.HttpSessionDataObject;
import oracle.cabo.ui.data.tree.SimpleTreeData;
import oracle.jbo.ApplicationModule;
import oracle.jbo.ViewObject;
import oracle.adf.model.BindingContext;
import oracle.adf.model.binding.DCDataControl;
//import oracle.jbo.common.Configuration;
import javax.servlet.http.HttpSession;
import oracle.jbo.client.Configuration;
public class CreateTreeData
public CreateTreeData()
public static DataObject getTreeData(RenderingContext context, String namespace, String name)
// create root node
SimpleTreeData root = new SimpleTreeData();
int BetID = 0;
// get the parameter from url
BajaContext bContext = (BajaContext) context.getProperty(ServletConstants.BAJA_NAMESPACE,
BajaRenderingContext.BAJA_CONTEXT_PROPERTY);
HttpSession session = bContext.getServletRequest().getSession(true);
try
//BetID = new Integer(( bContext.getServletRequest( ) ).getParameter( "BetID" )).intValue();
String s = ( bContext.getServletRequest( ) ).getQueryString();
BetID = new Integer(s).intValue();
session.setAttribute("BetID", s);
//BetID = new Integer(session.getAttribute("BetID").toString()).intValue();
catch ( Exception ex)
// log the error on the console
BetID = new Integer(session.getAttribute("BetID").toString()).intValue();
//System.out.println( "Parameters cannot be retrieved" );
//System.out.println( ex.getMessage() );
String amDef = "model.AppModule";
String config = "AppModuleLocal";
ApplicationModule am = Configuration.createRootApplicationModule(amDef, config);
AppModuleImpl myAm = (AppModuleImpl)am;
root = myAm.createNodesData(BetID);
myAm.remove();
Configuration.releaseRootApplicationModule(am,true);
// return the tree
return root;
3. createNodesData(int Id) is the actual function that creates the data structure containing the nodes.
It is in AppModule. The actual tree is kept in one table and every node knows its parent ID. There is no limitation in depth.
This function is called recursively until the tree is finished and the parameter Id is the Id of the parent node that I want to be listed. Tne top parent nodes has null in ParentID field.
public SimpleTreeData createNodesData(int Id)
SimpleTreeData tData = new SimpleTreeData();
String baseSQL =
"SELECT Bet.ID, Bet.CUST_LOGIN_ID, Bet.BET_CLASS_ID, Bet.PARENT_BET_ID," +
"Bet.CHAMPIONSHIP_ID, Bet.AMOUNT, Bet.WIN_RATE, Bet.IS_WINNER, Bet.BET_DATE, " +
"BetClass.NAME, CustLogin.EMAIL, CustLogin.ID AS CUST_LOGIN_ID " +
"FROM BET Bet, CUST_LOGIN CustLogin, BET_CLASS BetClass " +
"WHERE (Bet.CUST_LOGIN_ID = CustLogin.ID) AND (Bet.BET_CLASS_ID = BetClass.ID) ";
if(Id!=0){
String sqlStmt = baseSQL + " AND (Bet.ID = '"+ Id +"')";
ViewObject betVo = this.createViewObjectFromQueryStmt("betVo", sqlStmt);
betVo.executeQuery();
if(betVo.hasNext())
//SimpleTreeData tData = new SimpleTreeData();
tData.setText(betVo.first().getAttribute("NAME").toString());
if(betVo.first().getAttribute("PARENT_BET_ID")==null)
tData.put("Email", betVo.first().getAttribute("EMAIL").toString());
tData.put("BetDate", betVo.first().getAttribute("BET_DATE").toString());
tData.put("BetID", betVo.first().getAttribute("ID").toString());
tData.put("IsWinner", betVo.first().getAttribute("IS_WINNER").toString());
tData.put("Amount", betVo.first().getAttribute("AMOUNT").toString());
tData.put("Rate", betVo.first().getAttribute("WIN_RATE").toString());
if(Integer.parseInt(betVo.first().getAttribute("BET_CLASS_ID").toString())>1){
tData.setExpandable(UIConstants.EXPANDABLE_EXPANDED);
betVo.remove();
String sqlStmt = baseSQL + " AND (Bet.PARENT_BET_ID = '"+ Id +"')";
ViewObject betVo = this.createViewObjectFromQueryStmt("betVo" + Id, sqlStmt);
betVo.executeQuery();
while(betVo.hasNext()){
tData.addChild(createNodesData(Integer.parseInt(betVo.next().getAttribute("ID").toString())));
betVo.remove();
return tData;
Hope this will help... -
I need help with XML coding. Please reply
I recently created a podcast. I submitted it to iTunes. All was successful but the download speed was Horrible. I had about 10 people test it -- after that the ISP I use shifted my Domain to a Streaming Server. The Tech then changed the specs to my iTunes <guid>. I updated the info on iTunes, but since then no one has been able to download it from iTunes. The RSS feed on the page ( website) works, but if I type it in to an RSS feed, I am even having problems getting it to recognize it.
I feel the main problem is that the shifting of servers and changing the <guid> caused a major problem. Since my ISP and Tech rep is mainly Windows oriented, his expertise with Apple is very little. ( As is mine ).
I will insert a snippet of the code and ask for Help... I really need to fix this, because I have secured another Domain, and wish to create a new podcast.
(BTW if any one listens to any of them, I now have a mixing board and Mic.. so I am trying to better it.)
Website: www.riverratdoc.com
snippet of XML code
<enclosure url="http://stream.riverratdoc.com/RiverratDoc/episode1a.mp3" length="9551933" type="audio/mpeg" />
<guid isPermaLink="false">09072010EPS01</guid><!-- just make unique per episode -->
<pubDate>Fri, 9 Jul 2010 12:40:01 GMT</pubDate>
Thank you in advance
River Rat DocThe problem doesn't lie with your feed, although it does contain an error - you have given a non-existent sub-category. You need to stick to the categories and sub-categories listed here:
http://www.apple.com/itunes/podcasts/specs.html#categories
Subscribing to your feed from the iTunes Store page work as such, but the episodes throw up an error message. The problem lies with your episode media files: you are trying to stream them. Pasting the URL into a browser produces a download (where it should play the file) of a small file which does not play and in fact is a text file containing (in the case of ep.2) this:
[Reference]
Ref1=http://stream.riverratdoc.com/RiverratDoc/episode2.mp3?MSWMExt=.asf
Ref2=http://70.33.177.247:80/RiverratDoc/episode2.mp3?MSWMExt=.asf
You must provide a direct link to the actual mp3 file. Streaming won't work. The test is that if you paste the URL of the media file (as given in the feed) into the address bar of a browser it should play the file. -
Help with XML - which is better - Help needed
Current version of Oracle:
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
I'm new to XML & this is my first post.
Background: I have a "few" relational tables which are designed to assist the form scraping and to store the values as Key-Value-Attribute from the UI capture. (the change to the design is not possible at this time). I've also built the "normalized" schema which will hold the normalized data from this form-scrapping schema.
In order to achive this: I plan on having (1) XML view which the UI will call and then it will be inserted/updated in the normalized schema (2) to be able to use the same XML by the BI publisher for reporting (3) end user query this form-scraping db to view as normalized data.
Following are my thoughts about the approach & please correct & guide if my understanding/approach is wrong.
After some good reading on this forum and other materials, I've come up with the below mentioned XML generation method. How can I convert this XML "record" such that it can satisfy the above stated.
output:
<?xml version="1.0"?>
<ROWSET>
<ROW>
<FORM_TYPE_ID>900</FORM_TYPE_ID>
<SYSTEM_NAME>HAZMAT_ENROLLMENT</SYSTEM_NAME>
<FORM_TYPE>ENR-HAZMAT</FORM_TYPE>
<FORM_ID>2371370</FORM_ID>
<SUBMISSION_TYPE_ID>60</SUBMISSION_TYPE_ID>
<FILING_DATE>29-APR-11</FILING_DATE>
<SECTION>
<SECTION_ROW>
<SECTION_ID>6750</SECTION_ID>
<SECTION_NAME>Personal Information</SECTION_NAME>
<ATTRIBUTE>
<ATTRIBUTE_ROW>
<SRC>FRM_RSP</SRC>
<ATTR_ID>30001</ATTR_ID>
<ATTR_NAME>ENROLLEE_FIRST_NAME</ATTR_NAME>
<ATTR_DESC>Enrollee's First Name</ATTR_DESC>
<ATTR_VAL>Test First Name</ATTR_VAL>
</ATTRIBUTE_ROW>
<ATTRIBUTE_ROW>
<SRC>FRM_RSP</SRC>
<ATTR_ID>30002</ATTR_ID>
<ATTR_NAME>ENROLLEE_MIDDLE_INIT</ATTR_NAME>
<ATTR_DESC>Enrollee's Middle Initial</ATTR_DESC>
<ATTR_VAL>Test Middle Initial</ATTR_VAL>
</ATTRIBUTE_ROW>
</SECTION_ROW>
</SECTION>
</ROW>
</ROWSET>
Code:
*(All REF_% tables are lookup and FRM_RESPONSE is a KVA capture table and TBL_RESPONSE is also a KVA capture only used if the input is table wise (rows X columns))*
FORM is made up of SECTIONs (1-to-many), SECTIONs contain ATTR_IDs (question ids, 1-to-many), %RESPONSE is always linked to an ATTR_ID
CREATE OR REPLACE function DEVDBA.gen_xmlstr (p_form_id form.form_id%type) return clob as
str clob := '
SELECT rft.form_type_id, rft.system_name,rft.form_type, f.form_id, f.submission_type_id, f.sp_id,
f.filing_date, f.tracking_num, f.spplmntl_num, f.parent_form_id, f.created_date, f.created_by,
f.updated_date, f.updated_by,
CURSOR(SELECT rs.section_id,
rs.section_name,
CURSOR(SELECT ''FRM_RSP'' src, fr.frm_response_id, ra.attr_id, ra.attr_name, ra.attr_desc, fr.attr_val
FROM frm_response fr, ref_attr ra, ref_section_attr rsa
WHERE fr.form_id = f.form_id
AND fr.attr_id = rsa.attr_id
AND fr.form_section_id = rsa.form_section_id
AND fr.attr_id = ra.attr_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP1'' src, tr.tbl_response_id, tr.col_attr_id1, ra.attr_name, ra.attr_desc, col_attr_val1
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id1 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP2'' src, tr.tbl_response_id, tr.col_attr_id2, ra.attr_name, ra.attr_desc, col_attr_val2
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id2 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP3'' src, tr.tbl_response_id, TO_NUMBER(tr.col_attr_id3), ra.attr_name, ra.attr_desc, col_attr_val3
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND TO_NUMBER(tr.col_attr_id3) = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP4'' src, tr.tbl_response_id, tr.col_attr_id4, ra.attr_name, ra.attr_desc, col_attr_val4
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id4 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP5'' src, tr.tbl_response_id, tr.col_attr_id5, ra.attr_name, ra.attr_desc, col_attr_val5
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id5 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP6'' src, tr.tbl_response_id, tr.col_attr_id6, ra.attr_name, ra.attr_desc, col_attr_val6
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id6 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP7'' src, tr.tbl_response_id, tr.col_attr_id7, ra.attr_name, ra.attr_desc, col_attr_val7
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id7 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP8'' src, tr.tbl_response_id, tr.col_attr_id8, ra.attr_name, ra.attr_desc, col_attr_val8
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id8 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP9'' src, tr.tbl_response_id, tr.col_attr_id9, ra.attr_name, ra.attr_desc, col_attr_val9
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id9 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
UNION
SELECT ''TBL_RSP10'' src, tr.tbl_response_id, tr.col_attr_id10, ra.attr_name, ra.attr_desc, col_attr_val10
FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
WHERE tr.form_id = f.form_id
AND tr.col_attr_id10 = ra.attr_id
AND tr.form_section_id = rsa.form_section_id
AND rsa.form_section_id = rfs.form_section_id
attribute
FROM ref_section rs, ref_form_section rfs
WHERE rs.section_id = rfs.section_id
AND rfs.form_type_id = f.form_type_id
ORDER BY rs.section_id, rfs.form_section_id)
section
FROM ref_form_type rft, form f
WHERE rft.form_type_id = f.form_type_id
AND f.form_id = ' || p_form_id; --2371370'';
begin
return dbms_xmlgen.getxml(str);
end gen_xmlstr;
Invocation:
select gen_xmlstr(2371370)
from dual;
Below is the execution plan. Can this be better?
Execution Plan
Plan hash value: 2652539008
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 75 | 3 (0)| 00:00:01 |
| 1 | SORT UNIQUE | | 11 | 1024 | 40 (88)| 00:00:01 |
| 2 | UNION-ALL | | | | | |
| 3 | NESTED LOOPS | | | | | |
| 4 | NESTED LOOPS | | 1 | 91 | 5 (0)| 00:00:01 |
| 5 | NESTED LOOPS | | 1 | 82 | 3 (0)| 00:00:01 |
|* 6 | TABLE ACCESS BY INDEX ROWID| FRM_RESPONSE | 1 | 25 | 2 (0)| 00:00:01 |
|* 7 | INDEX RANGE SCAN | FK3_FRM_RESPONSE | 20 | | 1 (0)| 00:00:01 |
| 8 | TABLE ACCESS BY INDEX ROWID| REF_ATTR | 1 | 57 | 1 (0)| 00:00:01 |
|* 9 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
|* 10 | INDEX RANGE SCAN | FK2_REF_SECTION_ATTR | 2 | | 1 (0)| 00:00:01 |
|* 11 | TABLE ACCESS BY INDEX ROWID | REF_SECTION_ATTR | 1 | 9 | 2 (0)| 00:00:01
| 12 | NESTED LOOPS | | | | | |
| 13 | NESTED LOOPS | | 1 | 105 | 2 (0)| 00:00:01 |
| 14 | NESTED LOOPS | | 1 | 48 | 2 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 16 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 44 | 1 (0)| 00:00:01 |
|* 17 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 18 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 19 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 20 | NESTED LOOPS | | | | | |
| 21 | NESTED LOOPS | | 1 | 100 | 2 (0)| 00:00:01 |
| 22 | NESTED LOOPS | | 1 | 43 | 2 (0)| 00:00:01 |
|* 23 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 24 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 39 | 1 (0)| 00:00:01 |
|* 25 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 26 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 27 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 28 | NESTED LOOPS | | | | | |
| 29 | NESTED LOOPS | | 1 | 86 | 3 (0)| 00:00:01 |
| 30 | NESTED LOOPS | | 1 | 29 | 2 (0)| 00:00:01 |
|* 31 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 32 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 25 | 1 (0)| 00:00:01 |
|* 33 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 34 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 35 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 1 (0)| 00:00:01 |
| 36 | NESTED LOOPS | | | | | |
| 37 | NESTED LOOPS | | 1 | 93 | 2 (0)| 00:00:01 |
| 38 | NESTED LOOPS | | 1 | 36 | 2 (0)| 00:00:01 |
|* 39 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 40 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 32 | 1 (0)| 00:00:01 |
|* 41 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 42 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 43 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 44 | NESTED LOOPS | | | | | |
| 45 | NESTED LOOPS | | 1 | 93 | 2 (0)| 00:00:01 |
| 46 | NESTED LOOPS | | 1 | 36 | 2 (0)| 00:00:01 |
|* 47 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 48 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 32 | 1 (0)| 00:00:01 |
|* 49 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 50 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 51 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 52 | NESTED LOOPS | | | | | |
| 53 | NESTED LOOPS | | 1 | 90 | 2 (0)| 00:00:01 |
| 54 | NESTED LOOPS | | 1 | 33 | 2 (0)| 00:00:01 |
|* 55 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 56 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 29 | 1 (0)| 00:00:01 |
|* 57 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 58 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 59 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 60 | NESTED LOOPS | | | | | |
| 61 | NESTED LOOPS | | 1 | 95 | 2 (0)| 00:00:01 |
| 62 | NESTED LOOPS | | 1 | 38 | 2 (0)| 00:00:01 |
|* 63 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 64 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 34 | 1 (0)| 00:00:01 |
|* 65 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 66 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 67 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 68 | NESTED LOOPS | | | | | |
| 69 | NESTED LOOPS | | 1 | 90 | 2 (0)| 00:00:01 |
| 70 | NESTED LOOPS | | 1 | 33 | 2 (0)| 00:00:01 |
|* 71 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 72 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 29 | 1 (0)| 00:00:01 |
|* 73 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 74 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 75 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 76 | NESTED LOOPS | | | | | |
| 77 | NESTED LOOPS | | 1 | 90 | 2 (0)| 00:00:01 |
| 78 | NESTED LOOPS | | 1 | 33 | 2 (0)| 00:00:01 |
|* 79 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 80 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 29 | 1 (0)| 00:00:01 |
|* 81 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 82 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 83 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 84 | NESTED LOOPS | | | | | |
| 85 | NESTED LOOPS | | 1 | 91 | 2 (0)| 00:00:01 |
| 86 | NESTED LOOPS | | 1 | 34 | 2 (0)| 00:00:01 |
|* 87 | INDEX RANGE SCAN | FK1_REF_SECTION_ATTR | 9 | 36 | 1 (0)| 00:00:01 |
|* 88 | TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE | 1 | 30 | 1 (0)| 00:00:01 |
|* 89 | INDEX RANGE SCAN | FK1_TBL_RESPONSE | 1 | | 0 (0)| 00:00:01 |
|* 90 | INDEX UNIQUE SCAN | PK_REF_ATTR | 1 | | 0 (0)| 00:00:01 |
| 91 | TABLE ACCESS BY INDEX ROWID | REF_ATTR | 1 | 57 | 0 (0)| 00:00:01 |
| 92 | SORT ORDER BY | | 20 | 1040 | 7 (29)| 00:00:01 |
|* 93 | HASH JOIN | | 20 | 1040 | 6 (17)| 00:00:01 |
| 94 | TABLE ACCESS BY INDEX ROWID | REF_FORM_SECTION | 20 | 200 | 2 (0)| 00:00:01 |
|* 95 | INDEX RANGE SCAN | FK1_FORM_SECTION | 20 | | 1 (0)| 00:00:01 |
| 96 | TABLE ACCESS FULL | REF_SECTION | 100 | 4200 | 3 (0)| 00:00:01 |
| 97 | NESTED LOOPS | | 1 | 75 | 3 (0)| 00:00:01 |
| 98 | TABLE ACCESS BY INDEX ROWID | FORM | 1 | 59 | 2 (0)| 00:00:01 |
|* 99 | INDEX UNIQUE SCAN | PK_FORM | 1 | | 1 (0)| 00:00:01 |
| 100 | TABLE ACCESS BY INDEX ROWID | REF_FORM_TYPE | 5 | 80 | 1 (0)| 00:00:01 |
|*101 | INDEX UNIQUE SCAN | PK_REF_FORM_TYPE | 1 | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
6 - filter("FR"."FORM_SECTION_ID"=:B1)
7 - access("FR"."FORM_ID"=:B1)
9 - access("FR"."ATTR_ID"="RA"."ATTR_ID")
10 - access("FR"."ATTR_ID"="RSA"."ATTR_ID")
11 - filter("RSA"."FORM_SECTION_ID"=:B1 AND "FR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
15 - access("RSA"."FORM_SECTION_ID"=:B1)
16 - filter("TR"."COL_ATTR_ID1" IS NOT NULL AND "TR"."FORM_ID"=:B1)
17 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
18 - access("TR"."COL_ATTR_ID1"="RA"."ATTR_ID")
23 - access("RSA"."FORM_SECTION_ID"=:B1)
24 - filter("TR"."COL_ATTR_ID2" IS NOT NULL AND "TR"."FORM_ID"=:B1)
25 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
26 - access("TR"."COL_ATTR_ID2"="RA"."ATTR_ID")
31 - access("RSA"."FORM_SECTION_ID"=:B1)
32 - filter("TR"."FORM_ID"=:B1)
33 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
34 - access("RA"."ATTR_ID"=TO_NUMBER("TR"."COL_ATTR_ID3"))
39 - access("RSA"."FORM_SECTION_ID"=:B1)
40 - filter("TR"."COL_ATTR_ID4" IS NOT NULL AND "TR"."FORM_ID"=:B1)
41 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
42 - access("TR"."COL_ATTR_ID4"="RA"."ATTR_ID")
47 - access("RSA"."FORM_SECTION_ID"=:B1)
48 - filter("TR"."COL_ATTR_ID5" IS NOT NULL AND "TR"."FORM_ID"=:B1)
49 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
50 - access("TR"."COL_ATTR_ID5"="RA"."ATTR_ID")
55 - access("RSA"."FORM_SECTION_ID"=:B1)
56 - filter("TR"."COL_ATTR_ID6" IS NOT NULL AND "TR"."FORM_ID"=:B1)
57 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
58 - access("TR"."COL_ATTR_ID6"="RA"."ATTR_ID")
63 - access("RSA"."FORM_SECTION_ID"=:B1)
64 - filter("TR"."COL_ATTR_ID7" IS NOT NULL AND "TR"."FORM_ID"=:B1)
65 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
66 - access("TR"."COL_ATTR_ID7"="RA"."ATTR_ID")
71 - access("RSA"."FORM_SECTION_ID"=:B1)
72 - filter("TR"."COL_ATTR_ID8" IS NOT NULL AND "TR"."FORM_ID"=:B1)
73 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
74 - access("TR"."COL_ATTR_ID8"="RA"."ATTR_ID")
79 - access("RSA"."FORM_SECTION_ID"=:B1)
80 - filter("TR"."COL_ATTR_ID9" IS NOT NULL AND "TR"."FORM_ID"=:B1)
81 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
82 - access("TR"."COL_ATTR_ID9"="RA"."ATTR_ID")
87 - access("RSA"."FORM_SECTION_ID"=:B1)
88 - filter("TR"."COL_ATTR_ID10" IS NOT NULL AND "TR"."FORM_ID"=:B1)
89 - access("TR"."FORM_SECTION_ID"=:B1)
filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
90 - access("TR"."COL_ATTR_ID10"="RA"."ATTR_ID")
93 - access("RS"."SECTION_ID"="RFS"."SECTION_ID")
95 - access("RFS"."FORM_TYPE_ID"=:B1)
99 - access("F"."FORM_ID"=2371370)
101 - access("RFT"."FORM_TYPE_ID"="F"."FORM_TYPE_ID")
What tools/techniques are available to generate the XSLT? (use XMLSpy etc?), how to create a such that it can be as simple as "select from v_xml_view;" and be able to replace * with column names?*
==============================
I've also tried the *SQL-XML extensions* but am stuck with the UNION PART (help is requested on how to union columns within the XMLAgg).
{code}
select
xmlelement ("System",
xmlforest(rft.form_type_id as "FormTypeID", rft.system_name as "SystemName", rft.form_type as "FormType", f.form_id as "FormID"),
xmlelement("Sections",
(select xmlagg(xmlelement("Section",
xmlforest(rs.section_id as "SectionID", rs.section_name as "SectionName"),
xmlelement("Attributes",
(select xmlagg(xmlelement("Attr",
xmlforest (rsa.attr_id as "AttrID", ra.attr_name as "AttrName", ra.attr_desc as "Attr_desc", fr.attr_val as "AttrValue")
) -- "attr"
) --xmlagg attr
from ref_section_attr rsa, ref_attr ra, frm_response fr
where rsa.attr_id = ra.attr_id
and rsa.form_section_id = rfs.form_section_id
and fr.form_id = f.form_id
and fr.form_section_id = rsa.form_section_id
and fr.attr_id = rsa.attr_id
) --attributes select
) -- attributes
) -- section elements
) -- xmlagg
from ref_section rs, ref_form_section rfs
where rs.section_id = rfs.section_id
and rfs.form_type_id = f.form_type_id
) -- select query
) -- sections
) -- system
as str
from ref_form_type rft, FORM f
where rft.form_type_id = f.form_type_id
and f.form_id = 2371420;
{code}
*and the output is like:
(I don't know how to format this for easy viewing!)*
{code}
<System><FormTypeID>900</FormTypeID><SystemName>HAZMAT_ENROLLMENT</SystemName><FormType>ENR-HAZMAT</FormType><FormID>2371420</FormID><Sections><Section><SectionID>6750</SectionID><SectionName>Personal Information</SectionName><Attributes><Attr><AttrID>30001</AttrID><AttrName>ENROLLEE_FIRST_NAME</AttrName><Attr_desc>Enrollee's First Name</Attr_desc><AttrValue>Enroll</AttrValue></Attr><Attr><AttrID>30002</AttrID><AttrName>ENROLLEE_MIDDLE_INIT</AttrName><Attr_desc>Enrollee's Middle Initial</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30003</AttrID><AttrName>ENROLLEE_LAST_NAME</AttrName><Attr_desc>Enrollee's Last Name</Attr_desc><AttrValue>User11</AttrValue></Attr><Attr><AttrID>30004</AttrID><AttrName>ENROLLEE_WORK_PHONE</AttrName><Attr_desc>Enrollee's Work Phone Number</Attr_desc><AttrValue>(703) 222-4444</AttrValue></Attr><Attr><AttrID>30005</AttrID><AttrName>ENROLLEE_FAX</AttrName><Attr_desc>Enrollee Fax Number</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30006</AttrID><AttrName>ENROLLEE_EXT</AttrName><Attr_desc>Enrollee's Work Extension</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30007</AttrID><AttrName>ENROLLEE_EMAIL</AttrName><Attr_desc>Enrollee's Email</Attr_desc><AttrValue>[email protected]</AttrValue></Attr><Attr><AttrID>30023</AttrID><AttrName>POC_TYPE</AttrName><Attr_desc>Point of Contact Type</Attr_desc><AttrValue>Consultant</AttrValue></Attr><Attr><AttrID>30008</AttrID><AttrName>ENROLLEE_MAIL_ADDR_1</AttrName><Attr_desc>Enrollee's Mailing Address #1</Attr_desc><AttrValue>123 Main St</AttrValue></Attr><Attr><AttrID>30009</AttrID><AttrName>ENROLLEE_MAIL_ADDR_2</AttrName><Attr_desc>Enrollee's Mailing Address #2</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30010</AttrID><AttrName>ENROLLEE_CITY</AttrName><Attr_desc>Enrollee's City</Attr_desc><AttrValue>Herndon</AttrValue></Attr><Attr><AttrID>30011</AttrID><AttrName>ENROLLEE_STATE</AttrName><Attr_desc>Enrollee's State</Attr_desc><AttrValue>VA</AttrValue></Attr><Attr><AttrID>30012</AttrID><AttrName>ENROLLEE_ZIP</AttrName><Attr_desc>Enrollee's Zip</Attr_desc><AttrValue>28408</AttrValue></Attr><Attr><AttrID>30013</AttrID><AttrName>ENROLLEE_USER_NAME</AttrName><Attr_desc>Enrollee's User Name</Attr_desc><AttrValue>enrolluser11</AttrValue></Attr></Attributes></Section><Section><SectionID>6800</SectionID><SectionName>Company Information</SectionName><Attributes><Attr><AttrID>30014</AttrID><AttrName>DUN_BRADSTREET_NUM</AttrName><Attr_desc>Company's Dun and Bradstreet #</Attr_desc><AttrValue>198455201</AttrValue></Attr></Attributes></Section><Section><SectionID>6850</SectionID><SectionName>Points of Contact</SectionName><Attributes></Attributes></Section><Section><SectionID>6900</SectionID><SectionName>Enrollment Verification</SectionName><Attributes></Attributes></Section><Section><SectionID>6950</SectionID><SectionName>Enrollment Confirmation</SectionName><Attributes></Attributes></Section></Sections></System>
{code}
*The execution plan:*
{code}
Execution Plan
Plan hash value: 2641045985
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------Thanks for the data.
I thought you would have included data from TBL_RESPONSE, as the interesting part is how to deal with this "special" design ;)
So, to run some tests, I've generated the following data for FORM_SECTION_ID 5350 and 5360 :
insert into tbl_response (FORM_ID, FORM_SECTION_ID, COL_ATTR_ID1, COL_ATTR_VAL1, COL_ATTR_ID2, COL_ATTR_VAL2, COL_ATTR_ID3, COL_ATTR_VAL3, COL_ATTR_ID4, COL_ATTR_VAL4, COL_ATTR_ID5, COL_ATTR_VAL5, COL_ATTR_ID6, COL_ATTR_VAL6, COL_ATTR_ID7, COL_ATTR_VAL7, COL_ATTR_ID8, COL_ATTR_VAL8, COL_ATTR_ID9, COL_ATTR_VAL9, COL_ATTR_ID10, COL_ATTR_VAL10)
values (2371420, 5350, 30000, '05/03/2011', 30001, 'John', '30002', 'J', 30003, 'Doe', 30004, '(555) 123-1234', 30005, '(555) 123-1235', 30006, '1234567', 30007, '[email protected]', 30008, '10 Maple Street', 30009, '.');
insert into tbl_response (FORM_ID, FORM_SECTION_ID, COL_ATTR_ID1, COL_ATTR_VAL1, COL_ATTR_ID2, COL_ATTR_VAL2, COL_ATTR_ID3, COL_ATTR_VAL3, COL_ATTR_ID4, COL_ATTR_VAL4, COL_ATTR_ID5, COL_ATTR_VAL5, COL_ATTR_ID6, COL_ATTR_VAL6, COL_ATTR_ID7, COL_ATTR_VAL7, COL_ATTR_ID8, COL_ATTR_VAL8, COL_ATTR_ID9, COL_ATTR_VAL9, COL_ATTR_ID10, COL_ATTR_VAL10)
values (2371420, 5350, 30011, 'MA', 30012, '02668', '30013', 'jdoe', null, '', null, '', null, '', null, '', null, '', null, '', null, '');
insert into tbl_response (FORM_ID, FORM_SECTION_ID, COL_ATTR_ID1, COL_ATTR_VAL1, COL_ATTR_ID2, COL_ATTR_VAL2, COL_ATTR_ID3, COL_ATTR_VAL3, COL_ATTR_ID4, COL_ATTR_VAL4, COL_ATTR_ID5, COL_ATTR_VAL5, COL_ATTR_ID6, COL_ATTR_VAL6, COL_ATTR_ID7, COL_ATTR_VAL7, COL_ATTR_ID8, COL_ATTR_VAL8, COL_ATTR_ID9, COL_ATTR_VAL9, COL_ATTR_ID10, COL_ATTR_VAL10)
values (2371420, 5360, 30014, '123456789', 30015, 'My Company', '30016', '50 Main Street', 30017, '.', 30018, 'Marstons Mills', 30019, 'MA', 30020, '02648', 30021, '(555) 123-1236', null, '', null, '');And here's the query :
WITH attr_unpivot AS (
SELECT form_section_id
, attr_val
FROM (
SELECT form_section_id
, XMLForest(col_attr_id1 as "AttrID", col_attr_val1 as "AttrValue") as attr01
, XMLForest(col_attr_id2 as "AttrID", col_attr_val2 as "AttrValue") as attr02
, XMLForest(col_attr_id3 as "AttrID", col_attr_val3 as "AttrValue") as attr03
, XMLForest(col_attr_id4 as "AttrID", col_attr_val4 as "AttrValue") as attr04
, XMLForest(col_attr_id5 as "AttrID", col_attr_val5 as "AttrValue") as attr05
, XMLForest(col_attr_id6 as "AttrID", col_attr_val6 as "AttrValue") as attr06
, XMLForest(col_attr_id7 as "AttrID", col_attr_val7 as "AttrValue") as attr07
, XMLForest(col_attr_id8 as "AttrID", col_attr_val8 as "AttrValue") as attr08
, XMLForest(col_attr_id9 as "AttrID", col_attr_val9 as "AttrValue") as attr09
, XMLForest(col_attr_id10 as "AttrID", col_attr_val10 as "AttrValue") as attr10
FROM tbl_response
WHERE form_id = 2371420
UNPIVOT (
attr_val FOR attr_pos IN (attr01,attr02,attr03,attr04,attr05,attr06,attr07,attr08,attr09,attr10)
UNION ALL
SELECT form_section_id
, XMLForest(fr.attr_id as "AttrID", fr.attr_val as "AttrValue")
FROM frm_response fr
WHERE fr.form_id = 2371420
SELECT XMLElement("System",
XMLForest(
rft.form_type_id as "FormTypeID"
, rft.system_name as "SystemName"
, rft.form_type as "FormType"
, f.form_id as "FormID"
, XMLElement("Sections",
SELECT XMLAgg(
XMLElement("Section",
XMLForest(
rs.section_id as "SectionID"
, rs.section_name as "SectionName"
, XMLElement("Attributes",
SELECT XMLAgg(
XMLElement("Attr",
XMLForest(
ra.attr_desc as "AttrDesc"
, ra.attr_name as "AttrName"
, v.attr_val
FROM attr_unpivot v
JOIN ref_section_attr rsa ON rsa.attr_id = extractValue(v.attr_val,'AttrID')
AND rsa.form_section_id = v.form_section_id
JOIN ref_attr ra ON ra.attr_id = rsa.attr_id
WHERE rsa.form_section_id = rfs.form_section_id
FROM ref_section rs
JOIN ref_form_section rfs ON rs.section_id = rfs.section_id
WHERE rfs.form_type_id = f.form_type_id
) as xmldoc
FROM ref_form_type rft
JOIN form f ON rft.form_type_id = f.form_type_id
WHERE f.form_id = 2371420
;The WITH clause builds a normalized result set out of TBL_RESPONSE and FRM_RESPONSE.
That result set is then joined in the main query for each section of the form.
The resulting XML document looks like :
<System>
<FormTypeID>900</FormTypeID>
<SystemName>ENROLLMENT</SystemName>
<FormType>ENR</FormType>
<FormID>2371420</FormID>
<Sections>
<Section>
<SectionID>6750</SectionID>
<SectionName>Personal Information</SectionName>
<Attributes>
<Attr>
<AttrDesc>Enrollment Date</AttrDesc>
<AttrName>ENROLLMENT_DATE</AttrName>
<AttrID>30000</AttrID>
<AttrValue>05/03/2011</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's First Name</AttrDesc>
<AttrName>ENROLLEE_FIRST_NAME</AttrName>
<AttrID>30001</AttrID>
<AttrValue>John</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Middle Initial</AttrDesc>
<AttrName>ENROLLEE_MIDDLE_INIT</AttrName>
<AttrID>30002</AttrID>
<AttrValue>J</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Last Name</AttrDesc>
<AttrName>ENROLLEE_LAST_NAME</AttrName>
<AttrID>30003</AttrID>
<AttrValue>Doe</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Work Phone Number</AttrDesc>
<AttrName>ENROLLEE_WORK_PHONE</AttrName>
<AttrID>30004</AttrID>
<AttrValue>(555) 123-1234</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee Fax Number</AttrDesc>
<AttrName>ENROLLEE_FAX</AttrName>
<AttrID>30005</AttrID>
<AttrValue>(555) 123-1235</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Work Extension</AttrDesc>
<AttrName>ENROLLEE_EXT</AttrName>
<AttrID>30006</AttrID>
<AttrValue>1234567</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Email</AttrDesc>
<AttrName>ENROLLEE_EMAIL</AttrName>
<AttrID>30007</AttrID>
<AttrValue>[email protected]</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Mailing Address #1</AttrDesc>
<AttrName>ENROLLEE_MAIL_ADDR_1</AttrName>
<AttrID>30008</AttrID>
<AttrValue>10 Maple Street</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Mailing Address #2</AttrDesc>
<AttrName>ENROLLEE_MAIL_ADDR_2</AttrName>
<AttrID>30009</AttrID>
<AttrValue>.</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's State</AttrDesc>
<AttrName>ENROLLEE_STATE</AttrName>
<AttrID>30011</AttrID>
<AttrValue>MA</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Zip</AttrDesc>
<AttrName>ENROLLEE_ZIP</AttrName>
<AttrID>30012</AttrID>
<AttrValue>02668</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's User Name</AttrDesc>
<AttrName>ENROLLEE_USER_NAME</AttrName>
<AttrID>30013</AttrID>
<AttrValue>jdoe</AttrValue>
</Attr>
</Attributes>
</Section>
<Section>
<SectionID>6800</SectionID>
<SectionName>Company Information</SectionName>
<Attributes>
<Attr>
<AttrDesc>Company's DB #</AttrDesc>
<AttrName>DBNUM</AttrName>
<AttrID>30014</AttrID>
<AttrValue>123456789</AttrValue>
</Attr>
<Attr>
<AttrDesc>Company Name</AttrDesc>
<AttrID>30015</AttrID>
<AttrValue>My Company</AttrValue>
</Attr>
<Attr>
<AttrDesc>Company Adress #1</AttrDesc>
<AttrID>30016</AttrID>
<AttrValue>50 Main Street</AttrValue>
</Attr>
<Attr>
<AttrDesc>Company Adress #2</AttrDesc>
<AttrID>30017</AttrID>
<AttrValue>.</AttrValue>
</Attr>
<Attr>
<AttrDesc>Company City</AttrDesc>
<AttrID>30018</AttrID>
<AttrValue>Marstons Mills</AttrValue>
</Attr>
<Attr>
<AttrDesc>Company State</AttrDesc>
<AttrID>30019</AttrID>
<AttrValue>MA</AttrValue>
</Attr>
<Attr>
<AttrDesc>Company Zip</AttrDesc>
<AttrID>30020</AttrID>
<AttrValue>02648</AttrValue>
</Attr>
<Attr>
<AttrDesc>Company Phone</AttrDesc>
<AttrID>30021</AttrID>
<AttrValue>(555) 123-1236</AttrValue>
</Attr>
</Attributes>
</Section>
<Section>
<SectionID>6850</SectionID>
<SectionName>Points of Contact</SectionName>
<Attributes/>
</Section>
<Section>
<SectionID>6900</SectionID>
<SectionName>Enrollment Verification</SectionName>
<Attributes/>
</Section>
<Section>
<SectionID>6950</SectionID>
<SectionName>Enrollment Confirmation</SectionName>
<Attributes/>
</Section>
</Sections>
</System> -
Need Help Removing XML Photo Gallery on Button Click
Hi, I'm new to flash so this might seem like a dumb question, but I'm right in the middle of designing a photography site and need some help. I have 4 buttons in my timeline that go to the corresponding frame labels when clicked, above each frame label is a keyframe with actionscript applied to it, that will load an external XML photo gallery. I need the current photo gallery that's on the screen to disappear when I click on a new button to load the new XML photo gallery. this is the code that will be above each frame label with a few changes, then below this is the code for my buttons. Any help is greatly appreciated. Thank you Code: Select all var imageX:XML; var imageList:XMLList; var canvas:MovieClip = new MovieClip(); var picLoader:Loader; addChild(canvas); canvas.x = -155; canvas.y = 160; var req:URLRequest = new URLRequest("gallery.xml"); var imageLoader:URLLoader = new URLLoader(); imageLoader.addEventListener(Event.COMPLETE, onComplete); imageLoader.load(req); function onComplete(e:Event):void { imageX = new XML(imageLoader.data); imageList = imageX.image; picLoader = new Loader(); picLoader.contentLoaderInfo.addEventListener(Event .COMPLETE, imageLoaded); picLoader.load(new URLRequest (imageList[0].url)); } function imageLoaded(e:Event):void { canvas.addChild(picLoader); } Code for the buttons in different keyframe. Code: Select all stop(); kids_btn.addEventListener(MouseEvent.CLICK,onKidsClick); couples_btn.addEventListener(MouseEvent.CLICK,onCouplesClick); portraits_btn.addEventListener(MouseEvent.CLICK,onPortraitsClick); bellies_btn.addEventListener(MouseEvent.CLICK,onBelliesClick); function onKidsClick(e:MouseEvent):void { gotoAndStop("kids"); } function onCouplesClick(e:MouseEvent):void { gotoAndStop("couples"); } function onPortraitsClick(e:MouseEvent):void { gotoAndStop("portraits"); } function onBelliesClick(e:MouseEvent):void { gotoAndStop("bellies"); }
Hi, I'm new to flash so this might seem like a dumb question, but I'm right in the middle of designing a photography site and need some help. I have 4 buttons in my timeline that go to the corresponding frame labels when clicked, above each frame label is a keyframe with actionscript applied to it, that will load an external XML photo gallery. I need the current photo gallery that's on the screen to disappear when I click on a new button to load the new XML photo gallery. this is the code that will be above each frame label with a few changes, then below this is the code for my buttons. Any help is greatly appreciated. Thank you Code: Select all var imageX:XML; var imageList:XMLList; var canvas:MovieClip = new MovieClip(); var picLoader:Loader; addChild(canvas); canvas.x = -155; canvas.y = 160; var req:URLRequest = new URLRequest("gallery.xml"); var imageLoader:URLLoader = new URLLoader(); imageLoader.addEventListener(Event.COMPLETE, onComplete); imageLoader.load(req); function onComplete(e:Event):void { imageX = new XML(imageLoader.data); imageList = imageX.image; picLoader = new Loader(); picLoader.contentLoaderInfo.addEventListener(Event .COMPLETE, imageLoaded); picLoader.load(new URLRequest (imageList[0].url)); } function imageLoaded(e:Event):void { canvas.addChild(picLoader); } Code for the buttons in different keyframe. Code: Select all stop(); kids_btn.addEventListener(MouseEvent.CLICK,onKidsClick); couples_btn.addEventListener(MouseEvent.CLICK,onCouplesClick); portraits_btn.addEventListener(MouseEvent.CLICK,onPortraitsClick); bellies_btn.addEventListener(MouseEvent.CLICK,onBelliesClick); function onKidsClick(e:MouseEvent):void { gotoAndStop("kids"); } function onCouplesClick(e:MouseEvent):void { gotoAndStop("couples"); } function onPortraitsClick(e:MouseEvent):void { gotoAndStop("portraits"); } function onBelliesClick(e:MouseEvent):void { gotoAndStop("bellies"); }
-
HELP: JSP + XML + XSLT = HTML?
Hello, all.
I am trying out Weblogic 6 and I am trying to get the JSP + XML + XSLT =>
HTML chain working.
I am coming from using Orion and SAXON.. and in that situation I had a JSP
that contained XML tags... they were filled in at runtime and then using
Servlet-Chaining was passed along to the SAXON XSLT Processer. SAXON checked
for the inline XSL specified and then used that to transform the document
into HTML.
It worked well, but there were some other features missing/not documented
that we now need.
With Weblogic I am trying to use the XSLT Tag Library that comes with the
distribution, but it seems to be very finicky. I followed the directions and
I got it to do a sort of roundabout transformation. But it doesn't seem to
work quite right.
The best I can get is the following:
I have an 'xslt' directory url-pattern-mapped to xslt.jsp (as instructed)...
but can't figure out how to specify the xsl file on-the-fly... that is, if I
don't hard-code the XSL file in the x:xslt element in the xslt.jsp it
complains about some XML file not having a root element.
Ideal situation:
1. I have a JSP that includes XML elements.
2. It is filled from a database at runtime and specifys (using a PI) what
XSL stylesheet it is to be processed with.
3. Somehow (fingers crossed) the XML is processed and transformed into HTML
by the appropriate XSL file.
I think I am mostly stuck moving between steps 2 and 3.
Can anyone give me some hints? Are there some Weblogic specific
elements/tags that I have to include in the XML file that Weblogic will
catch and re-direct to the XSL Parser?
Please, anyone, if you have some information, I would much appreciate it.
Dylan Parker
PS - I apologize for the cross-post, I hope it doesn't cause too much
traffic.Craig,
I've since discovered how to do it with the WL Taglibrary... and have
moved on =)
It has to do with the EXTREMELY BADLY documented x:xml tag that can
appear within the x:xslt tag body...
So the WL Tag Library allows something like the following.
(Please note, angled brackets are omitted in this post to prevent html
parsing)
[x:xslt stylesheet="sheet.xsl"]
[x:xml]
Here is the XML to run the sheet on.
This should have all relevant XML syntax: the PIs, the doctype,
root elements etc...
[x:xml]
[x:xslt]
And that DOES work. But not very well. WL, a little prematurely
incorporated versions 1.2 of Xerces and Xalan in their product -- and
these versions have some irritating bugs.
Also -- There tag library doesn't copy the source XML across as UTF-8
.. so a lot of the Japanese I have embedded there (from a DB) gets
mangled somewhere in their code...
AND -- If you hammer a little bit on an JSP/XML that uses the WL Tag
Library (eg clicking refresh lots of times in IE)... I get huge
amounts of irritating exceptions appearing in the log files.
NullPointerExceptions
XSL Parsing Exceptions
XML Parsing Exceptions
but completely unpredictably...
In my eyes.. the WL XML/XSL Tag Library using the incorporated and
untouchable Xalan and Xerces (v1.2) is virtually unusable.
What a pain.
BUT! Apache offers a similar OPEN SOURCE XSL Tag Library available
here:
http://jakarta.apache.org/taglibs/doc/xsl-doc/intro.html
And it uses the standard, non-weblogic-incorporated, Xerces and Xalan
(which means you can provide whatever version you want).. and it works
impressively well.
It has almost identical performance as the WL Taglib, and without all
of the bizarre exceptions being thrown.
And it does proper passing of the character encoding type!
If only the taglib did caching though =(
The performance hit over pure JSP is huge. Almost two orders of
magnitude. On my desktop box I can get around 500Requests/Sec if I am
returning HTML direct from a JSP... while if I produce XML that gets
processed by XSL into HTML the Requests/Sec drops to 5!!!!
Caching. Caching. And more Caching. A lot of DiskIO is going on with
the XML/XSL/XHTML chain of events.
I hope this helps!
I'd be curious as to what you find out as well.
Dylan Parker
On 5 Mar 2001 07:20:00 -0800, "Craig Macha"
<[email protected]> wrote:
>
Yep, I feel Dylan's pain.
I am trying to accomplish the same thing. A JSP page generating
dynamic XML content and then utilizing an XSLT stylesheet to transform
all the content into XHTML.
Does anyone have some examples that show exactly how to accomplish
this? Can I do this with WLS and the XML taglib that comes with
it? Or do I have to move on to something like Cocoon to get this
capability?
Any insight would be greatly appreciated.
Thanks,
Craig Macha
"Dylan Parker" <[email protected]> wrote:
Hello, all.
I am trying out Weblogic 6 and I am trying to get the
JSP + XML + XSLT =>
HTML chain working.
I am coming from using Orion and SAXON.. and in that situation
I had a JSP
that contained XML tags... they were filled in at runtime
and then using
Servlet-Chaining was passed along to the SAXON XSLT Processer.
SAXON checked
for the inline XSL specified and then used that to transform
the document
into HTML.
It worked well, but there were some other features missing/not
documented
that we now need.
With Weblogic I am trying to use the XSLT Tag Library
that comes with the
distribution, but it seems to be very finicky. I followed
the directions and
I got it to do a sort of roundabout transformation. But
it doesn't seem to
work quite right.
The best I can get is the following:
I have an 'xslt' directory url-pattern-mapped to xslt.jsp
(as instructed)...
but can't figure out how to specify the xsl file on-the-fly...
that is, if I
don't hard-code the XSL file in the x:xslt element in
the xslt.jsp it
complains about some XML file not having a root element.
Ideal situation:
1. I have a JSP that includes XML elements.
2. It is filled from a database at runtime and specifys
(using a PI) what
XSL stylesheet it is to be processed with.
3. Somehow (fingers crossed) the XML is processed and
transformed into HTML
by the appropriate XSL file.
I think I am mostly stuck moving between steps 2 and 3.
Can anyone give me some hints? Are there some Weblogic
specific
elements/tags that I have to include in the XML file that
Weblogic will
catch and re-direct to the XSL Parser?
Please, anyone, if you have some information, I would
much appreciate it.
Dylan Parker
PS - I apologize for the cross-post, I hope it doesn't
cause too much
traffic. -
Stax reading /writing need help from xml guru plz
hi, i have been told that stax reading /writing should involve no overhead and that is why i use it and i am now able to write my large data to file, but using my reader i seem to run out of memory, using netbeans profiler i ahve found that char[] seems to be the problem,
by backtracing i ahve found that javax.xml.parser.SAXParser.parse calls the xerces packages which eventually leads to the char[ ], now my code for my reader is attatched here...
package utilities;
import Categorise.Collection;
import Categorise.Comparison;
import Categorise.TestCollection;
import java.io.IOException;
import javax.xml.parsers.*;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.Attributes;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import measures.Protocol;
* @author dthomas
public class XMLParser extends DefaultHandler
static Collection collection = new Collection();
List<Short> cList;
List<Comparison> comparisonList;
File trainFileName;
File testFileName;
TestCollection tc;
List<TestCollection> testCollectionList;
List<File> testFileNameList = new ArrayList<File>();
List<File> trainFileNameList = new ArrayList<File>();
boolean allTrainsAdded = false;
Protocol protocol;
List<File> trainingDirList;
File testingDir;
int counter = 0;
File[ ] trainingDirs;
File[ ] trainingFileNames;
File[ ] testFileNames;
TestCollection[ ] testCollections;
Comparison[ ] comparisons;
Comparison c;
short[ ] cCounts;
String order;
String value;
File trainDir;
/** Creates a new instance of XMLParser */
public XMLParser() {
public static Collection read( File aFile )
long startTime = System.currentTimeMillis();
System.out.println( "Reading XML..." );
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp;
try {
sp = spf.newSAXParser();
sp.parse( aFile, new XMLParser() );
} catch (IOException ex) {
ex.printStackTrace();
} catch (SAXException ex) {
ex.printStackTrace();
} catch (ParserConfigurationException ex) {
ex.printStackTrace();
long endTime = System.currentTimeMillis();
long totalTime = ( endTime - startTime ) / 1000;
System.out.println( "Done..." + totalTime + " seconds" );
return collection;
public void startElement(String uri,String localName,String qName, Attributes attributes)
if( qName.equals( "RE" ) )
testCollectionList = new ArrayList<TestCollection>();
else if( qName.equals( "p") )
boolean isConcatenated = new Boolean( attributes.getValue( "c" ) );
boolean isStatic = new Boolean( attributes.getValue( "s" ) );
protocol = new Protocol( isConcatenated, isStatic );
else if( qName.equals( "trdl" ) )
trainingDirList = new ArrayList<File>();
else if( qName.equals( "trd" ) )
trainDir = new File( attributes.getValue( "fn" ) );
trainingDirList.add( trainDir );
else if( qName.equals( "td" ) )
testingDir = new File( attributes.getValue( "fn" ) );
else if( qName.equals( "TC" ) )
counter++;
System.out.println( counter );
comparisonList = new ArrayList<Comparison>();
testFileName = new File( attributes.getValue( "tfn" ) );
testFileNameList.add( testFileName );
tc = new TestCollection( );
tc.setTestFileName( testFileName );
else if ( qName.equals( "r" ) )
order = attributes.getValue( "o" );
value = attributes.getValue( "v" );
cList.add( Short.parseShort( order ), new Short( value ) );
else if( qName.equals( "c" ) )
cList = new ArrayList<Short>();
trainFileName = new File( attributes.getValue( "trfn" ) );
if( !allTrainsAdded )
trainFileNameList.add( trainFileName );
public void characters(char []ch,int start,int length)
//String str=new String(ch,start,length);
//System.out.print(str);
public void endElement(String uri,String localName,String qName)
if (qName.equals( "c") )
allTrainsAdded = true;
cCounts = new short[ cList.size() ];
for( int i = 0; i < cCounts.length; i++ )
cCounts[ i ] = cList.get( i );
c = new Comparison( trainFileName, tc );
c.setcCounts( cCounts );
this.comparisonList.add( c );
else if( qName.equals( "TC" ) )
comparisons = new Comparison[ comparisonList.size() ];
comparisonList.toArray( comparisons );
tc.setComparisons( comparisons );
testCollectionList.add( tc );
else if( qName.equals( "RE" ) )
testCollections = new TestCollection[ testCollectionList.size() ];
testCollectionList.toArray( testCollections );
collection.setTestCollections( testCollections );
testFileNames = new File[ testFileNameList.size() ];
testFileNameList.toArray( testFileNames );
collection.setTestingFiles( testFileNames );
//String[ ] testCategories = new String[ testCategoryList.size() ];
//testCategoryList.toArray( testCategories );
//collection.setTestCategories( testCategories );
trainingFileNames = new File[ trainFileNameList.size() ];
trainFileNameList.toArray( trainingFileNames );
collection.setTrainingFiles( trainingFileNames );
//String[ ] trainingCategories = new String[ trainCategoryList.size() ];
//trainCategoryList.toArray( trainingCategories );
//collection.setTrainingCategories( trainingCategories );
collection.setProtocol( protocol );
trainingDirs = new File[ trainingDirList.size() ];
trainingDirList.toArray( trainingDirs );
collection.setTrainingDirs( trainingDirs );
collection.setTestingDir( testingDir );
//else
//System.out.println("End element: {" + uri + "}" + localName);
}i thought it may have been a recursive problme, hence having so many instance variables instead of local ones but that hasn't helped.
all i need at the end of this is a Collection which holds an array of testCollections, which holds an array of cCounts and i was able to hold all of this in memory as all i am loading is what was in memory before it was written.
can someone plz help
ps when i use tail in unix to read the end of the xml file it doesnt work correctly as i cannot specify the number of lines to show, it shows all of the file as thought it is not split into lines or contains new line chars or anything, it is stored as one long stream, is this correct??
here is a snippet of the xml file:
<TC tfn="
/homedir/dthomas/Desktop/4News2/output/split3/alt.atheism/53458"><c trfn="/homed
ir/dthomas/Desktop/4News2/output/split0/alt.atheism/53586"><r o="0" v="0"></r><r
o="1" v="724"></r><r o="2" v="640"></r><r o="3" v="413"></r><r o="4" v="245"></
r><r o="5" v="148"></r><r o="6" v="82"></r><r o="7" v="52"></r><r o="8" v="40"><
/r><r o="9" v="30"></r><r o="10" v="22"></r><r o="11" v="16"></r><r o="12" v="11
"></r><r o="13" v="8"></r><r o="14" v="5"></r><r o="15" v="2"></r></c><c trfn="/
homedir/dthomas/Desktop/4News2/output/split0/alt.atheism/53495"><r o="0" v="0"><
/r><r o="1" v="720"></r><r o="2" v="589"></r><r o="3" v="349"></r><r o="
please if anyone has any ideas from this code why a char[] would use 50% of the memory taken, and that the average age seems to show that the same one continues to grow..
thanks in advance
danny =)hi, i am still having lo luck with reading the xml data back into memory, as i have said before, the netbeans profiler is telling me it is a char[] that is using 50% of the memory but i cannot see how a char[] is created, my code doesn't so it must be the xml code...plz help
-
Help with XML, display data on swipe/click
Hello.
I am trying to create a moibile app that displays XML data. It's basically a phone book. I want the data to change when swiped. I can get the data in just fine. I can get it to display fine. I am not seeing the correct image first, however. I think it's a problem with my imagenum variable.
Then, I want to change what is displayed when the user clicks/swipes on the screen. How do I do that?
stop();
var nameArray:Array = new Array();
var countryArray:Array = new Array();
var portraitArray:Array = new Array();
var flagArray:Array = new Array();
var jobtitleArray:Array = new Array();
var imageNum:Number=0;
var totalImages:Number;
//Load XML
var XMLURLLoader:URLLoader = new URLLoader();
XMLURLLoader.load(new URLRequest("recbook.xml"));
XMLURLLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(event:Event):void {
var theXMLData:XML = new XML(XMLURLLoader.data);
totalImages=theXMLData.name.length();
for (var i:Number =0; i < totalImages; i++){
//push xml data into the arrays
nameArray.push(theXMLData.name[i]);
countryArray.push(theXMLData.country[i]);
portraitArray.push(theXMLData.portrait[i]);
flagArray.push(theXMLData.flag[i]);
jobtitleArray.push(theXMLData.jobtitle[i]);
//data is processed
loadData();
function loadData():void {
var thisPortrait:String = portraitArray[imageNum];
var thisCountry:String = countryArray[imageNum];
var thisName:String = nameArray[imageNum];
var thisJobtitle:String = jobtitleArray[imageNum];
var thisFlag:String = flagArray[imageNum];
var dataLoader:Loader = new Loader();
dataLoader.load(new URLRequest(portraitArray[imageNum]));
dataLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dataLoaded);
function dataLoaded(event:Event):void {
//I want to start with image 0 (img1.jpg) and cycle through with a mouse click (finger swipe on iOS)
stage.addEventListener(MouseEvent.CLICK, loadMainImage1);
function loadMainImage1(event:MouseEvent):void {
portraitUILoader.source=thisPortrait;
flagUILoader.source=thisFlag;
selectedName.text=thisName;
selectedCountry.text=thisCountry;
selectedJobtitle.text=thisJobtitle;
//add to imageNum (1);
imageNum++;
if (imageNum < totalImages) {//stopping at img2
trace("imageNum " + imageNum);
trace("image name (thisPortrait) " + thisPortrait);//losing image 4 somewhere
loadData();
trace("Total Images " + totalImages);
//click to move past the home screenI'd like to ditch this. don't know how.
homeScreen_mc.addEventListener(MouseEvent.CLICK, goNext);
function goNext(event:MouseEvent):void
nextFrame();
*/here's the output:
imageNum 1
image name (thisPortrait) images/img1.jpg
imageNum 2
image name (thisPortrait) images/img2.jpg
imageNum 3
image name (thisPortrait) images/img3.jpg
Total Images 4
Total Images 4
Total Images 4
Total Images 4
It starts the display on image 1 (the second in the series img2.jpg)*/Thank you.
That helped. I get the correct images in the output, but not in the display. I also get the following error. Any chance you could help with that?
new output after moving the increment:
imageNum 0
image name (thisPortrait) images/img1.jpg
imageNum 1
image name (thisPortrait) images/img2.jpg
imageNum 2
image name (thisPortrait) images/img3.jpg
imageNum 3
image name (thisPortrait) images/img4.jpg
TypeError: Error #2007: Parameter url must be non-null.
at flash.display::Loader/_load()
at flash.display::Loader/load()
at iOS_fla::MainTimeline/loadData()
at iOS_fla::MainTimeline/loadData()
at iOS_fla::MainTimeline/loadData()
at iOS_fla::MainTimeline/loadData()
at iOS_fla::MainTimeline/loadData()
at iOS_fla::MainTimeline/processXML()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
Maybe you are looking for
-
Getting while running the BPEL process from java
Hi All, We are using the following java code to run the BPM process. package callBPMProcess; import java.util.Hashtable; import java.util.UUID; import java.util.List; import javax.naming.Context; import oracle.soa.management.facade.Locator; import or
-
How is NETVAL_FLT calculated in CUHD/CUIT?
Hello, I have been trying to figure out why NETVAL_FLT has a value sometimes but mostly not. I cannot seem to find where it can be calculated. Does anyone know this? Regards, Dean.
-
ICal notes still running off the screen
Has Apple ever addressed/fixed this admittedly minor but extremely annoying issue?? It's been going on for so long that all previous posts regarding this issue are no longer on the discussion boards. Message was edited by: pingvuiini
-
How do I rotate a received email pdf document
email attachments i receive need rotating to view...How do I rotate them??
-
Drag and drop custom component
I have a custom component that is a JPanel with a JTextField and a JButton. The component is a display and chooser for an address. I want to be able to copy the address from one to another with drag and drop. Here's what I have so far. The drag start