NEED COMPILING HELP (10 duke points!!!!!!!)
Hi i'm using jedit, and i need to know why my compiler isn't working. As some may know that jedit has an inbuilt compiler called jcompiler. The results from the jcompiler are fine but when i try javac i recieve an error, and when i use java i recieve an error...
error for javac:
D:\>javac haha
javac: invalid flag: haha
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are us
ed
-classpath <path> Specify where to find user class files
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-d <directory> Specify where to place generated class files
-encoding <encoding> Specify character encoding used by source files
-source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version
-help Print a synopsis of standard options
error for java:
D:\>java haha
Exception in thread "main" java.lang.NoClassDefFoundError: haha
the program:
class try {
public static void main (String [] args) {
System.out.println("Hello World");
}To the perosn or persons who completely solve my problem, they recieve 10 points (btw i made the prog haha in 30 secs but i'm still a beginner (a student) in java )
HelloWorld.java :
public class HelloWorld {
public static void main (String [] args) {
System.out.println("Hello World");
}d:\somedir> dir
0:00 10101 HelloWorld.java
d:\somedir> javac HelloWorld.java
d:\somedir> dir
0:00 10101 HelloWorld.java
0:00 10101 HelloWorld.class
d:\somedir> java HelloWorld
Hello World
-Alexis
Similar Messages
-
Need some help learning cue points, etc
I need some help with a Flash project I'm working on. If any
Flash junkies out there are up for sitting down with me through
email or IM and helping me get to the point where I have a template
FLA doing what I want to do, I'd be willing to pay you. It wouldn't
be much, but it would be something. Here's what I'm trying to do:
I need to create an interactive talking-head style flash
presentation with a number of progressive download externally
linked FLV files, playing in succession, supported by movie-clip
text animations and supporting graphics which are triggered by cue
points in the video. I also need a simple navigation menu linking
to the FLV files. I've got some of this down already, namely, I've
laid the FLVs in and they are playing in succession. I'm stuck on
the cue point part. At this point I really just need some hands-on
help. I've bought books, I've scoured the web.
I'm easy to communicate with, and I'm good with computers and
comfortable in many multimedia design programs. Flash is very
powerful, but tougher to learn than I expected, and I'm at the end
of my rope =PMy advice... start with a very simple "proof of concept" project before you attempt the entire package.
It will be much easier to scale up if you first have a very good understanding of what's going on.
So one simple video with just one cuepoint and only one button and additional display. You'll also have to work out the interaction of pausing the video when a cuepoint is reached or button pushed to display the graph, giving the viewer time to read the graph... then when the viewer closes the graph, the video should "resume".
Start very simple and build on that only after you understand the fundamentals.
Second, you mention "video reports"... plural. So that most likely means that you will need a video player with a "playlist".
This may mean that you'll need to learn to use a little .xml to bring in the playlist data. You may also find xml an excellant way to bring other data into you project.
At the link listed above there is an excellant tutorial on "Integrating Flash and XML"
"Flash and XML"
"XML Video Playlist"
"ActionScript 3 XML Basics"
"ActionScript 3 Advanced XML"
Personally I would not even begin a project like this without considering how I could use xml to feed data into the project.
Here's an example of a video player I created that has a playlist, thumbnails, categories, transcipts, "Now Playing" etc. All that data comes into the main .swf via various xml files. Super good way in input data into Flash.
http://www.drheimer.com/video/
Yours is a rather ambitious project and will take awhile to gain the skill and assemble the pieces. So when you come to a new part... first create a real simple "proof of concept" model so you can learn how that section works. Don't expect to be able to assemble the entire project all at once.
Best wishes,
Adninjastrator -
Need-Compiling-Help :)
Hi, I am new, and I bought a book in 96/97 about Java, and finally gotten round to it lol! Yes its old, but its all I have at the moment, and so far I have some trouble compiling its little sample programs, before I found out what was wrong with my background in other langauges, but im stuck on this one any help would be much appreciated here it is with the error I get.
class Motorcycle {
String make;
String color;
boolean engineState;
void startEngine() {
if (engineState == true)
System.out.println("The engine is already on.");
else {
engineState = true;
System.out.println("The engine is now on.");
void showAtts() {
System.out.println("This motorcycle is a " + color + " " + make);
if(engineState == true)
System.out.println("The engine is on.");
else System.out.println("The engine is off.");
public static void main (String args[]) {
Motorcycle m = new Motorcycle();
m.make = "Yamaha RZ350";
m.color = "yellow";
System.out.println("Calling showAtts...");
m.showAtts();
System.out.println("........");
System.out.println("Starting engine...");
m.startEngine();
System.out.println("........");
System.out.println("Calling showAtts...");
m.showAtts();
System.out.println("........");
System.out.println("Starting engine...");
m.startEngine();
I get the error: Exception in thread "main" java.lang.NoClassDefFoundError: motorcycle/class
lol please help :) Im using latest JDK stuff :)I compiled ur code and i found no problem with it. I think the problem is ur process of compilation. Are you using command line for compilation? There are lots of java IDE out there that can help you not worry about the compilation process such as Forte, JCreator and many more.
Anyways, if you are still curious how to compile ur code in command line. Try this and tell me how you did:
compile:
c:\ur_current_directory>c:\j2sdk1.4.0\bin\javac Motorcycle.java
or
c:\ur_current_directory>c:\j2sdk1.4.0\bin\javac -classpath . Motorcycle.java
NOTE: . (dot) there signifies current directory
to run:
c:\ur_current_directory>c:\j2sdk1.4.0\bin\java Motorcycle
or
c:\ur_current_directory>c:\j2sdk1.4.0\bin\javac -cp . Motorcycle.java
Hope this helps -
Need charting help - multiple data points between major ticks
Hi,
I am trying to create an AreaChart in which the data shows a
consumption rate over the course of a week. The major points along
the x-axis will be Monday, Tuesday, ... , Sunday (the days of the
week). However, there are multiple data points between each day. I
only want the days of the week to show on the axis but I want to
plot all of the data points. How would I go about accomplishing
this task?
Thanks in advance,
Brent SchooleyThanks, it is getting closer now. My only problem now is that
the data points do not line up correctly with the tick marks. I've
look through the documentation and I can't figure out what to do to
ensure this happens. Here are the relevant portions of my code:
[Bindable]
public var energyDataAC:ArrayCollection = new
ArrayCollection( [
{date: "2007, 7, 27, 0", saved: 0},
{date: "2007, 7, 27, 12", saved: 50},
{date: "2007, 7, 28, 0", saved: 35},
{date: "2007, 7, 28, 12", saved: 0},
{date: "2007, 7, 29, 0", saved: 0},
{date: "2007, 7, 29, 12", saved: 46},
{date: "2007, 7, 30, 0", saved: 39},
{date: "2007, 7, 30, 12", saved: 0},
{date: "2007, 7, 31, 0", saved: 0},
{date: "2007, 7, 31, 12", saved: 44},
{date: "2007, 8, 1, 0", saved: 45},
{date: "2007, 8, 1, 12", saved: 0} ]);
public function myParseFunction(s:String):Date {
// Get an array of Strings from the comma-separated String
passed in.
var a:Array = s.split(",");
// Create the new Date object.
var newDate:Date = new Date(a[0],a[1],a[2],a[3]);
return newDate;
<mx:AreaChart id="Areachart" height="100%" width="100%"
paddingLeft="5" paddingRight="5"
showDataTips="true" dataProvider="{energyDataAC}" >
<mx:horizontalAxisRenderer>
<mx:AxisRenderer styleName="myAxisStyle"/>
</mx:horizontalAxisRenderer>
<mx:horizontalAxis>
<mx:DateTimeAxis alignLabelsToUnits="true"
dataUnits="hours" labelUnits="days" dataInterval="12" interval="1"
parseFunction="myParseFunction"/>
</mx:horizontalAxis>
<mx:series>
<mx:AreaSeries yField="saved" xField="date"
form="segment" displayName="Energy Saved"/>
</mx:series>
</mx:AreaChart>
<mx:Legend dataProvider="{Areachart}"/>
Any ideas?
Thanks,
Brent -
BW error. Need urgent Help( I will give out full points).
We have BW version 3.1 and content 3.3.
We are doing loads to ODS and getting oracle partition error. It gives Oracle partition error ORA-14400. inserted partition key doesn't map to any parititon.
The exception must either be prevented, caught within the procedure
"INSERT_ODS"
(FORM)", or declared in the procedure's RAISING clause.
o prevent the exception, note the following:
atabase error text........: "ORA-14400: inserted partition key does not map to
any partition"
nternal call code.........: "[RSQL/INSR//BIC/B0000401000 ]"
lease check the entries in the system log (Transaction SM21).
ou may able to find an interim solution to the problem
n the SAP note system. If you have access to the note system yourself,
se the following search criteria:
The termination occurred in the ABAP program "GP3WRFMGVS1D8IW16LLGSL4QQKH " in
"INSERT_ODS".
he main program was "SAPMSSY1 ".
he termination occurred in line 41 of the source code of the (Include)
program "GP3WRFMGVS1D8IW16LLGSL4QQKH "
f the source code of program "GP3WRFMGVS1D8IW16LLGSL4QQKH " (when calling the
editor 410).
rocessing was terminated because the exception "CX_SY_OPEN_SQL_DB" occurred in
the
rocedure "INSERT_ODS" "(FORM)" but was not handled locally, not declared in
the
AISING clause of the procedure.
he procedure is in the program "GP3WRFMGVS1D8IW16LLGSL4QQKH ". Its source code
starts in line 21
f the (Include) program "GP3WRFMGVS1D8IW16LLGSL4QQKH ".
Please help me guys. I will award points for good answers.Dear Sir,
Now I have got the problem like yours (load to ODS and ORACLE partition error ORA-14400 with INSERT_ODS). Tell me, please - did you solve this problem?
Can you recommend me something? What did you do with partitions?
Help me, please - I need urgent help too.
GLEB ([email protected])
P.S. Sorry for my English, I havent got any language practice for a long time. -
Hi, I need a video editing software for my Power Mac G5 system. Hunted all over for one! Can anyone help me and point me in the right direction. Everything I come across is for intel based systems. Many thanks in advance.
I have Final Cut Studio V1 - the PPC/Intel V5/5.1 cross-grade version, which would suit your requirements perfectly. (I have it for sale at present down here).
If you keep looking, you're sure to find a similar second hand copy in your area, without the need to upgrade your graphics card.
I'd go for Final Cut Pro as above over any version of Express. FCP has the full version of LiveType - not the truncated version that was released later on. -
Help Needed compile, deploy Web Service with Annotations on Web Logic 9.2
Hi,
I am new web logic and need some help in compiling, creating deployment file i.e. war, ear on Web Logic 9.2. I have the following sample web service with annotations code code but need help in compiling, creating deployment file (war,ear), creating proxy for testing etc. How to compile and create deployment files in WebLogic 9.2. Any help is really appreciated.
package sample_ws;
import java.rmi.RemoteException;
import javax.jws.*;
import javax.jws.soap.SOAPBinding;
import org.w3c.dom.Document;
@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL,
parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class EchoService {
public EchoService() {
@WebMethod(action="echo")
@WebResult(targetNamespace="http://exa.org", name="echoResult")
public Document echo(@WebParam(targetNamespace = "http://exa.org",
name = "echoMsg")
Document doc) throws RemoteException{
return doc;
}ThanksI am using Oracle Jdeveloper as an IDE and created a war file and deployed on Oracle App. Server it works fine. Now if I deploy the same war on Web Logic it gives me the following error:
java.lang.IllegalStateException: could not find schema type named {{http}//exa.org}>>echoResult
Errors were encountered while performing this operation. Here is the code I have:
package webservice2 ;
import java.rmi.RemoteException;
import javax.jws.*;
import javax.jws.soap.SOAPBinding;
import org.w3c.dom.Document;
@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT,
use = SOAPBinding.Use.LITERAL,
parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class EchoService {
public EchoService() {
@WebMethod(action="echo")
@WebResult(targetNamespace="http://exa.org", name="echoResult")
public Document echo(@WebParam(targetNamespace = "http://exa.org",
name = "echoMsg")
Document doc) throws RemoteException{
return doc;
}And here is the wsdl file I have:
<definitions
name="EchoServiceService"
targetNamespace="http://webservice2/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://webservice2/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:ns1="http://exa.org"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://exa.org" elementFormDefault="qualified"
xmlns:tns="http://exa.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/">
<element name="echoMsg" nillable="true">
<complexType>
<sequence>
<any/>
</sequence>
</complexType>
</element>
<element name="echoResult" nillable="true">
<complexType>
<sequence>
<any/>
</sequence>
</complexType>
</element>
</schema>
</types>
<message name="EchoServicePortType_echo">
<part name="echoMsg" element="ns1:echoMsg"/>
</message>
<message name="EchoServicePortType_echoResponse">
<part name="echoResult" element="ns1:echoResult"/>
</message>
<portType name="EchoService">
<operation name="echo">
<input message="tns:EchoServicePortType_echo"/>
<output message="tns:EchoServicePortType_echoResponse"/>
</operation>
</portType>
<binding name="EchoServiceSoapHttp" type="tns:EchoService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="echo">
<soap:operation soapAction="echo"/>
<input>
<soap:body use="literal" parts="echoMsg"/>
</input>
<output>
<soap:body use="literal" parts="echoResult"/>
</output>
</operation>
</binding>
<service name="EchoServiceService">
<port name="EchoServiceSoapHttpPort" binding="tns:EchoServiceSoapHttp">
<soap:address location="http://localhost:8888/EnableSrc-WebService2-context-root/EchoServiceSoapHttpPort"/>
</port>
</service>
</definitions>Any ideas what might be wrong. -
i need some help. im getting error -69 when trying to sync my ipod. i dont kno what to do. ive tried googling as much info as i can on this subject but i cant seem to find a answer to get me off to a good starting point. i back all my music up on a external hard drive.
If the file was not originally from iTunes, you'll need to redownload it from it's original source or rerip it from the CD. Files can sometimes go bad and become corrupted. As to how or why that happens, there are a number of ways.
What format are the problematic tracks in? Have you tried converting them to another format in iTunes?
iTunes: How to convert a song to a different file format
B-rock -
Query not compiling -- help needed
Hi,
I have a query which is not compiling, I am getting the following error when running the query in my PL/SQL developer.
"ORA-01790 expression must have same datatype as coressponding expression"
my query is below:
~select "CODE","NAME","LEVELX","PARENT","TYPEX","BEGIN_DATE","END_DATE" from cdms.cd_organizations~
~where typex='R'~
~union~
~select "CODE","NAME","LEVELX","PARENT","TYPEX","BEGIN_DATE","END_DATE" from cdms.cd_organizations_hist~
~where typex='R'~
~ and code in (~
~ select code from cdms.cdorganizations_hist~
~ minus~
~ select code from cdms.cd_organizations~
~ );~
I am getting a red line where code is underlined in the query,
Thanks in advanced,
AJ
~ ~Hi,
That's the error you would get in a MINUS operation if corresponding columns had different data types (for example, if cd_organizations_hist.code was a NUMBER, but cd_organizations.code was a VARCHAR2).
Use columns of the same type. Explicity convert data from one type to another (using TO_CHAR, for example) if necessary.
If you need more help, post a script that creates the tables and gets the same error. -
Anybody who can help me? I really need your help
I've tried to execute J2ee tutorial examples.
I don't know why this sample didn't execute...I've already finished to set up J2EE and enviornment variables.
I was trying this part from j2ee tutorial titled as "Packing Web modules".
Whenever I type "asant create-war" to make web modules in command window. I always got error.
Packaging Web Modules(From J2ee tutorial for your information)
A web module must be packaged into a WAR in certain deployment scenarios and whenever you want to distribute the web module. You package a web module into a WAR using the Application Server deploytool utility, by executing the jar command in a directory laid out in the format of a web module, or by using the asant utility. This tutorial allows you to use use either the first or the third approach. To build the hello1 application, follow these steps:
In a terminal window, go to <INSTALL>/j2eetutorial14/examples/web/hello1/.
Run asant build. This target will spawn any necessary compilations and will copy files to the <INSTALL>/j2eetutorial14/examples/web/hello1/build/ directory.
To package the application into a WAR named hello1.war using asant, use the following command:
asant create-war
This command uses web.xml and sun-web.xml files in the <INSTALL>/j2eetutorial14/examples/web/hello1 directory.
To learn how to configure this web application, package the application using deploytool by following these steps:
Start deploytool.
Create a web application called hello1 by running the New Web Component wizard. Select FileNewWeb Component.
In the New Web Component wizard:
Select the Create New Stand-Alone WAR Module radio button.
In the WAR File field, enter <INSTALL>/j2eetutorial14/examples/web/hello1/hello1.war. The WAR Display Name field will show hello1.
In the Context Root field, enter /hello1.
Click Edit Contents to add the content files.
In the Edit Contents dialog box, navigate to <INSTALL>/j2eetutorial14/examples/web/hello1/build/. Select duke.waving.gif, index.jsp, and response.jsp and click Add. Click OK.
Click Next.
Select the No Component radio button and click Next.
Click Finish.
Select FileSave.
A sample hello1.war is provided in <INSTALL>/j2eetutorial14/examples/web/provided-wars/. To open this WAR with deploytool, follow these steps:
Select FileOpen.
Navigate to the provided-wars directory.
Select the WAR.
Click Open Module.
I guess this step is for checking my system about setup information. I not sure how to change it.
the result from execution of ansnt command in dos
D:\J2ee\j2ee-1_4-doc-tutorial_7\j2eetutorial14\examples\web\hello1>asant create- war Buildfile: build.xml
j2ee-home-test:
BUILD FAILED D:\J2ee\j2ee-1_4-doc-tutorial_7\j2eetutorial14\examples\common\targets.xml:10: T he j2ee.home property is not properly set in <INSTALL>/j2eetutorial14/examples/c ommon/build.properties.
Set the j2ee.home property to the location of your Application Server installati on.
On Windows, you must escape any backslashes in the j2ee.home property with anoth er backslash or use forward slashes as a path separator. So, if your Application Server installation is C:\Sun\AppServer, you must set j2ee.home as follows:
j2ee.home = C:\\Sun\\AppServer
or
j2ee.home=C:/Sun/AppServer
j2ee.home is currently set to:
Total time: 0 seconds
D:\J2ee\j2ee-1_4-doc-tutorial_7\j2eetutorial14\examples\web\hello1>
I've installed J2ee sdk in C:\Sun\AppServer
PATH: %J2EE_HOME%\bin;%JAVA_HOME%\bin;
CLASSPATH: %J2EE_HOME%\lib\j2ee.jar;C:\Java\jre1.6.0_05\lib\ext\QTJava.zip;C:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar
J2EE_HOME: C:\Sun\AppServer
JAVA_HOME: C:\Sun\AppServer\jdk
I've installed J2ee with administration 4848, HTTP: 8089 HTTP: 8090
I guess this could refer the target.xml and build.properties. So, I've tried after changing some value, which is fit for my setup.
but, still doesn't work.
targets.xml
<path id="classpath">
<fileset dir="${j2ee.home}/lib">
<include name="j2ee.jar"/>
</fileset>
</path>
<target name="j2ee-home-test" >
<!-- Test if j2ee.home is set properly by looking for j2ee.jar -->
<available file="${j2ee.home}/lib/j2ee.jar" type="file" property="j2ee.jar.present" />
<fail unless="j2ee.jar.present">
The j2ee.home property is not properly set in <INSTALL>/j2eetutorial14/examples/common/build.properties.
Set the j2ee.home property to the location of your Application Server installation.
On Windows, you must escape any backslashes in the j2ee.home property with another backslash or use forward slashes as a path separator. So, if your Application Server installation is C:\Sun\AppServer, you must set j2ee.home as follows:
j2ee.home = C:\\Sun\\AppServer
or
j2ee.home=C:/Sun/AppServer
j2ee.home is currently set to: ${j2ee.home}
</fail>
</target>
<target name="clean" >
<delete dir="${build}" />
<delete dir="${dist}" />
<delete dir="${assemble}" />
<delete file="${ear.name}" />
<delete file="${war.name}" />
<delete file="${war.file}" />
<delete file="${client.jar.name}" />
</target>
<path id="db.classpath">
<fileset dir="${db.root}/lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="create-db_common"
depends="init,start-db,delete-db"
description="Create database tables and populate database." >
<sql driver="${db.driver}"
url="${db.url}"
userid="${db.user}"
password="${db.password}"
classpathref="db.classpath"
delimiter="${db.delimiter}"
autocommit="false"
onerror="abort" >
<transaction src="${sql.script}"/>
</sql>
</target>
<target name="delete-db"
description="Deletes the database tables." >
<sql driver="${db.driver}"
url="${db.url}"
userid="${db.user}"
password="${db.password}"
classpathref="db.classpath"
delimiter="${db.delimiter}"
autocommit="false"
onerror="continue" >
<transaction src="${delete.sql.script}"/>
</sql>
</target>
<target name="ping-db"
description="Checks to see if Derby is running." >
<java classname="org.apache.derby.drda.NetworkServerControl"
fork="yes"
resultproperty="db.ping.result">
<jvmarg line="${db.jvmargs}" />
<arg line="ping" />
<classpath refid="db.classpath" />
</java>
<condition property="db.running">
<equals arg1="${db.ping.result}" arg2="0" />
</condition>
</target>
<target name="start-db"
unless="db.running"
description="Starts the Derby databse server."
depends="ping-db">
<sun-appserv-admin
explicitcommand="start-database" />
</target>
<target name="stop-db"
description="Stops the Derby database server."
depends="ping-db"
if="db.running">
<sun-appserv-admin
explicitcommand="stop-database" />
</target>
<target name="admin_command_common">
<echo message="Doing admin task ${admin.command}"/>
<sun-appserv-admin
command="${admin.command}"
user="${admin.user}"
passwordfile="${admin.password.file}"
host="${admin.host}"
port="${admin.port}"
asinstalldir="${j2ee.home}" />
</target>
<target name="create-jdbc-resource_common">
<antcall target="admin_command_common">
<param name="admin.command"
value="create-jdbc-resource
--connectionpoolid ${conpool.name} ${jdbc.resource.name}" />
</antcall>
</target>
<target name="delete-jdbc-resource_common">
<antcall target="admin_command_common">
<param name="admin.command"
value="delete-jdbc-resource ${jdbc.resource.name}" />
</antcall>
</target>
<target name="deploy-war">
<antcall target="admin_command_common">
<param name="admin.command"
value="deploy ${war.file}" />
</antcall>
</target>
<target name="undeploy-war">
<antcall target="admin_command_common">
<param name="admin.command"
value="undeploy ${example}" />
</antcall>
</target>
<property environment="env" />
<target name="listprops"
description="Displays values of some of the properties of this build file">
<property file="../../common/admin-password.txt" />
<echo message="Path information" />
<echo message="j2ee.home = ${j2ee.home}" />
<echo message="j2ee.tutorial.home = ${j2ee.tutorial.home}" />
<echo message="env.Path = ${env.Path}" />
<echo message="env.PATH = ${env.PATH}" />
<echo message="" />
<echo message="Classpath information" />
<echo message="classpath = ${env.CLASSPATH}" />
<echo message="" />
<echo message="Admin information" />
<echo message="admin.password = ${AS_ADMIN_PASSWORD}" />
<echo message="admin.password.file = ${admin.password.file}" />
<echo message="admin.host = ${admin.host}" />
<echo message="admin.user = ${admin.user}" />
<echo message="admin.port = ${admin.port}" />
<echo message="https.port = ${https.port}" />
<echo message="" />
<echo message="Domain information" />
<echo message="domain.resources = ${domain.resources}" />
<echo message="domain.resources.port = ${domain.resources.port}" />
<echo message="" />
<echo message="Database information" />
<echo message="db.root = ${db.root}" />
<echo message="db.driver = ${db.driver}" />
<echo message="db.host = ${db.host}" />
<echo message="db.port = ${db.port}" />
<echo message="db.sid = ${db.sid}" />
<echo message="db.url = ${db.url}" />
<echo message="db.user = ${db.user}" />
<echo message="db.pwd = ${db.pwd}" />
<echo message="url.prop = ${url.prop}" />
<echo message="ds.class = ${ds.class}" />
<echo message="db.jvmargs = ${db.jvmargs}" />
</target>
build.properties ����
j2ee.home=
j2ee.tutorial.home=
asinstall.dir=${j2ee.home}
admin.password.file=${j2ee.tutorial.home}/examples/common/admin-password.txt
admin.host=localhost
admin.user=admin
admin.port=4848
https.port=8181
domain.resources="domain.resources"
domain.resources.port=8080
# Derby configuration settings
db.delimiter=;
db.root=${j2ee.home}/derby
db.driver=org.apache.derby.jdbc.ClientDriver
db.datasource=org.apache.derby.jdbc.ClientDataSource
db.host=localhost
db.port=1527
db.sid=sun-appserv-samples
db.url=jdbc:derby://${db.host}:${db.port}/${db.sid};create=true;
db.user=APP
db.pwd=APP
db.jvmargs=-ms16m -mx32m
Is there anyone who can tell me how to change it? I really need your help....
Thank you in advance.ok,
First of all make sure your tutorial folder is installed from the root:
C:\javaeetutorial5
or
D:\javaeetutorial5
it makes things so simple.
Secondly:
set your jee tutorial home
JAVAEE.TUTORIAL.HOME =
C:/javaeetutorial5
Thirdly: check in:
C:\javaeetutorial5\examples\bp-project
make a copy of the build.properties.sample save it as build.propropties, as a property file,
edit the properties file as in:
build.properties
As follows:
# uncomment the property javaee.home, and add the path
# to your GlassFish Java EE 5 SDK installation
javaee.home=c:/Sun/SDK
javaee.tutorial.home=c:/javaeetutorial5
# Uncomment the property j2ee.server.username,
# and replace the administrator username of the app-server
javaee.server.username=admin
# Uncomment the property j2ee.server.passwordfile,
# and replace the following line to point to a file that
# contains the admin password for your app-server.
# The file should contain the password in the following line:
AS_ADMIN_PASSWORD=admin1234and so fourth. Some of the settings as the application server name is all done for you
and then test it again.
Take care of editing the property file. It can give you headache.
Note also that this is for application server 9.1 - JEE5.
eve -
Air-lap1142n Is it dead or just in need of help?
Hi,
I have a number of air-lap1142n-e-k9 access points, so far they have all been deployed successfully aprt from this one unit.
When I deployed it, it joined the wlc as normal, downloaded the image, and I was able to rename it etc.. but then a couple of min's later it's status changed to down. It's details on the wlc had changed to name: blank, mac address 0000.0000.0000
I've tried restarting it a couple of times with no luck, below is the output from the console:
Press RETURN to get started!
*Mar 1 00:00:06.711: %SOAP_FIPS-2-SELF_TEST_IOS_SUCCESS: IOS crypto FIPS self test passed
*Mar 1 00:00:06.722: *** CRASH_LOG = YES
Security Core found.
Base Ethernet MAC address: 50:3D:E5:BE:E8:F8
*Mar 1 00:00:08.683: ERROR: wait 3 failed
*Mar 1 00:00:09.190: %SOAP_FIPS-2-SELF_TEST_RAD_SUCCESS: RADIO crypto FIPS self test passed on interface Dot11Radio 1
*Mar 1 00:00:09.199: Unsupported radio found of type 0
*Mar 1 00:00:09.236: %LWAPP-3-CLIENTEVENTLOG: Read and initialized AP event log (contains, 1024 messages)
*Mar 1 00:00:10.295: %LINK-3-UPDOWN: Interface GigabitEthernet0, changed state to up
*Mar 1 00:00:11.374: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0, changed state to up
*Mar 1 00:00:11.419: %SYS-5-RESTART: System restarted --
Cisco IOS Software, C1140 Software (C1140-K9W8-M), Version 12.4(21a)JHB1, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2010 by Cisco Systems, Inc.
Compiled Wed 11-Aug-10 15:45 by prod_rel_team
*Mar 1 00:00:11.419: %SNMP-5-COLDSTART: SNMP agent on host AP503d.e5be.e8f8 is undergoing a cold start
*Mar 1 00:13:37.040: %CAPWAP-5-CHANGED: CAPWAP changed state to DISCOVERY
*Mar 1 00:13:37.040: bsnInitRcbSlot: slot 0 has venus radio(UNSUPPORT)
*Mar 1 00:13:37.055: bsnUnlockDevice: not bring radio up: radio 0 is in admin disable state
*Mar 1 00:13:37.232: %SSH-5-ENABLED: SSH 2.0 has been enabled
*Mar 1 00:13:37.233: %LINK-3-UPDOWN: Interface Dot11Radio1, changed state to up
*Mar 1 00:13:37.235: Writing radio coredump to 'flash:/r0.rcore'
*Mar 1 00:13:37.407: %LINK-5-CHANGED: Interface Dot11Radio1, changed state to reset
*Mar 1 00:13:38.239: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio1, changed state to down
*Mar 1 00:13:48.469: %DHCP-6-ADDRESS_ASSIGN: Interface GigabitEthernet0 assigned DHCP address 172.31.44.41, mask 255.255.252.0, hostname AP503d.e5be.e8f8
*Mar 1 00:13:49.264: Interface Dot11Radio0: not starting because stop-on-failure set
*Mar 1 00:13:55.919: Interface Dot11Radio0: not starting because stop-on-failure set
*Mar 1 00:13:56.289: Logging LWAPP message to 255.255.255.255.
*Mar 1 00:13:59.364: %CDP_PD-4-POWER_OK: Full power - NEGOTIATED inline power source
*Mar 1 00:13:59.385: %LINK-3-UPDOWN: Interface Dot11Radio1, changed state to up
*Mar 1 00:14:00.384: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio1, changed state to up
*Mar 1 00:14:00.384: %SYS-6-LOGGINGHOST_STARTSTOP: Logging to host 255.255.255.255 started - CLI initiated
Translating "CISCO-CAPWAP-CONTROLLER"...domain server (192.168.134.251) (192.168.70.51)
*Mar 1 00:14:06.925: %CAPWAP-3-ERRORLOG: Did not get log server settings from DHCP.
*Mar 1 00:14:06.930: %CAPWAP-3-ERRORLOG: Could Not resolve CISCO-CAPWAP-CONTROLLER
*Mar 1 00:14:16.931: %CAPWAP-3-ERRORLOG: Go join a capwap controller
*May 19 08:07:23.000: %CAPWAP-5-DTLSREQSEND: DTLS connection request sent peer_ip: 172.18.1.40 peer_port: 5246
*May 19 08:07:23.000: %CAPWAP-5-CHANGED: CAPWAP changed state to
*May 19 08:07:23.778: %CAPWAP-5-DTLSREQSUCC: DTLS connection created sucessfully peer_ip: 172.18.1.40 peer_port: 5246
*May 19 08:07:23.778: %CAPWAP-5-SENDJOIN: sending Join Request to 172.18.1.40
*May 19 08:07:23.779: %CAPWAP-5-CHANGED: CAPWAP changed state to JOIN
*May 19 08:07:28.778: %CAPWAP-5-SENDJOIN: sending Join Request to 172.18.1.40
*May 19 08:08:05.436: %CDP_PD-4-POWER_OK: Full power - NEGOTIATED inline power source
*May 19 08:08:23.000: %DTLS-5-SEND_ALERT: Send WARNING : Close notify Alert to 172.18.1.40:5246
*May 19 08:08:23.040: %CAPWAP-5-CHANGED: CAPWAP changed state to DISCOVERY
*May 19 08:08:23.041: %CAPWAP-5-CHANGED: CAPWAP changed state to DISCOVERY
*May 19 08:08:23.041: bsnInitRcbSlot: slot 0 has venus radio(UNSUPPORT)
*May 19 08:08:23.046: bsnUnlockDevice: not bring radio up: radio 0 is in admin disable state
*May 19 08:08:23.077: %LINK-5-CHANGED: Interface Dot11Radio0, changed state to administratively down
*May 19 08:08:24.077: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio0, changed state to down
*May 19 08:08:33.055: %CAPWAP-3-ERRORLOG: Go join a capwap controller
*May 19 08:08:33.000: %CAPWAP-5-DTLSREQSEND: DTLS connection request sent peer_ip: 172.18.1.40 peer_port: 5246
*May 19 08:08:33.000: %CAPWAP-5-CHANGED: CAPWAP changed state to
*May 19 08:08:33.785: %CAPWAP-5-DTLSREQSUCC: DTLS connection created sucessfully peer_ip: 172.18.1.40 peer_port: 5246
*May 19 08:08:33.786: %CAPWAP-5-SENDJOIN: sending Join Request to 172.18.1.40
*May 19 08:08:33.786: %CAPWAP-5-CHANGED: CAPWAP changed state to JOIN
*May 19 08:08:38.786: %CAPWAP-5-SENDJOIN: sending Join Request to 172.18.1.40
I've tried re-imaging the AP a couple of times, with no luck. Is it dead or just in need of help?
Any ideas.
Thanks
DylanHi,
We are hitting the software bug and the bug ID is CSCsz56711
http://tools.cisco.com/Support/BugToolKit/search/getBugDetails.do?method=fetchBugDetails&bugId=CSCsz56711
The issue is related to PCI componenet on the AP hardware and log that points to that is..
bsnInitRcbSlot: slot 0 has venus radio(UNSUPPORT)
The Replacement is the resolution and please contact your reseller or partner and if ur are the partner then RMA ids the resolution..
Lemme know if this answered ur question and please dont forget to rate the usefull posts!!
Regards
Surendra -
Need your help on performance issue please
Hello everyone!
I need your help to understand an effect I notice with a Thread class I built. I currently work on enhancement of my application Playlist Editor (see http://www.lightdev.com/page74.htm) and a new release will be available soon.
Among other extensions the new release will have a title filter function which is based on audio data that is recursively read from ID3 tags of files found in a given root directory. The data collection is done by a CollectionThread class which reads into a data model class AudioDataModel and the entire process works fine, no problem with that.
However, when my application is started for the first time the CollectionThread runs approximately 3 minutes to collect data from approximately 4300 audio files on an Intel Pentium M 1,4 GHz, 512 MB RAM, Windows XP SP2. When the application is shut down and started again, it takes only a few seconds to do the same task for all subsequent launches.
I already tried to start the application with java option -Xms40m to increase initial heap size. This increases performance in general but the effect is still the same, i.e. first run lasts significantly longer than subsequent runs.
I also tried to build a pool mechanism which creates many empty objects in the data model and then releases them to contain the actual data at is being read in but this did not lead to better performance.
It must have to do with how Java (or Windows?) allocates and caches memory. I wonder whether there is a way to pre-allocate memory or if there are any other ideas to improve performance so that the process always only takes seconds instead of minutes?
I attach the key classes to this message. Any help or ideas is much appreciated!
Thanks a lot a best regards
Ulrich
PS: You can use the news subscription service at
http://www.lightdev.com/dynTemplate.php4?id=80&dynPage=subscribe.php4 to be informed when the new release of Playlist Editor is available.
All classes posted here do not need debugging, they already have proven to run error free. The classes are only posted for information for the interested reader - no need to go through all the stuff in detail - only if it interests you.
My application calls class CollectionThread wich is a subclass of InfoThread. CollectionThread recursively goes through a directory and file structure and stores found ID3 tag information in instances of class ID3v11Tag which in turn gets stored in one instance of class AudioDataModel. All classes are shown below.
This is the mentioned CollectionThread
* Light Development Playlist Editor
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package com.lightdev.app.playlisteditor.data;
import com.lightdev.lib.util.InfoThread;
import java.io.File;
* A class to collect audio data from a given storage location.
* <p>
* <code>CollectionThread</code> uses ID3 tag information to gain data.
* </p>
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
* GNU General Public License,
* for details see file gpl.txt in the distribution
* package of this software as well as any licensing notes
* inside this documentation
* @version 1, October 13, 2004
public class CollectionThread extends InfoThread {
* constructor
* @param model AudioDataModel the data model to collect data to
public CollectionThread(AudioDataModel model) {
this.model = model;
* constructor, creates a new empty AudioDataModel
public CollectionThread() {
this(new AudioDataModel());
* set the data model to collect data to
* @param model AudioDataModel the model to collect data to
public void setModel(AudioDataModel model) {
this.model = model;
* get the data model associated to this thread
* @return AudioDataModel the data model
public AudioDataModel getModel() {
return model;
* set the directory to collect data from
* @param rootDir File the directory to collect data from
public void setRootDirectory(File rootDir) {
this.rootDir = rootDir;
* do te actual work of this thread, i.e. iterate through a given directory
* structure and collect audio data
* @return boolean true, if work is left
protected boolean work() {
boolean workIsLeft = true;
maxValue = -1;
filesProcessed = 0;
if(getStatus() < STATUS_HALT_PENDING) {
countElements(rootDir.listFiles());
if(getStatus() < STATUS_HALT_PENDING) {
workIsLeft = collect(rootDir.listFiles());
return workIsLeft;
* count the elements in a given file array including its subdirectories
* @param files File[]
private void countElements(File[] files) {
int i = 0;
while (i < files.length && getStatus() < STATUS_HALT_PENDING) {
File file = files;
if (file.isDirectory()) {
countElements(file.listFiles());
i++;
maxValue++;
* recursively read data into model
* @param files File[] the file array representing the content of a given directory
private boolean collect(File[] files) {
int i = 0;
while(i < files.length && getStatus() < STATUS_HALT_PENDING) {
File file = files[i];
if(file.isDirectory()) {
collect(file.listFiles());
else if(file.getName().toLowerCase().endsWith("mp3")) {
try {
model.addTrack(file);
catch(Exception e) {
fireThreadException(e);
i++;
filesProcessed++;
fireThreadProgress(filesProcessed);
return (i<files.length);
/** the directory to collect data from */
private File rootDir;
/** the data model to collect data to */
private AudioDataModel model;
/** the number of files this thread processed so far while it is running */
private long filesProcessed = 0;
This is class InfoThread
* Light Development Java Library
* Copyright (C) 2003, 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package com.lightdev.lib.util;
import java.util.Vector;
import java.util.Enumeration;
* Abstract class <code>InfoThread</class> implements a status and listener concept.
* An <code>InfoThread</code> object actively informs all objects registered as listeners about
* status changes, progress and possible exceptions. This way the status of a running
* thread does not require a polling mechanism to be monitored.
* <p>
* <code>InfoThread</code> implements the following working scheme
* </p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
* GNU General Public License,
* for details see file gpl.txt in the distribution
* package of this software
* @version Version 1, October 13, 2004
public abstract class InfoThread extends Thread {
* construct an <code>InfoThread</code> object
* <p>This class is meant to be used when a <code>Thread</code> object is needed that actively
* informs other objects about its status</code>. It is a good idea therefore to register
* one or more listeners with instances of this class before doing anything
* else.</p>
* @see addInfoThreadListener
public InfoThread() {
* set the amount of time this thread shall idle after it is through with one
* work cycle and before a next work cycle is started. This influences the time
* other threads have for their work.
* @param millis long the number of milliseconds to idle after one work cycle
public void setIdleMillis(long millis) {
idleMillis = millis;
* Causes this thread to begin execution; the Java Virtual Machine calls the <code>run</code>
* method of this thread. Calls method <code>prepareThread</code> before calling
* <code>run</code>.
* @see run
* @see prepareThread
public synchronized void start() {
setStatus(STATUS_INITIALIZING);
prepareThread();
setStatus(STATUS_READY);
super.start();
* call method <code>start</code> instead of this method.
* calling this method directly will lead to an exception
* @see start
public void run() {
//System.out.println("InfoThread.run");
if (status == STATUS_READY) {
boolean workIsLeft = true;
setStatus(STATUS_RUNNING);
while (status < STATUS_STOP_PENDING && workIsLeft) {
if (status < STATUS_HALT_PENDING) {
workIsLeft = work();
if(!workIsLeft) {
setStatus(STATUS_WORK_COMPLETE);
if (status == STATUS_HALT_PENDING) {
setStatus(STATUS_HALTED);
else if (status == STATUS_STOP_PENDING) {
setStatus(STATUS_STOPPED);
else {
try {
sleep(idleMillis);
catch (InterruptedException e) {
fireThreadException(e);
else {
// error: Thread is not ready to run
setStatus(STATUS_THREAD_FINISHED);
* stop this thread. This will terminate the thread irrevokably. Use method
* <code>haltThread</code> to pause a thread with the possiblity to resume work later.
* @see haltThread
public void stopThread() {
switch (status) {
case STATUS_RUNNING:
setStatus(STATUS_STOP_PENDING);
break;
case STATUS_HALT_PENDING:
// exception: the thread already is about to halt
break;
case STATUS_STOP_PENDING:
// exception: the thread already is about to stop
break;
default:
// exception: a thread can not be stopped, when it is not running
break;
* halt this thread, i.e. pause working allowing to resume later
* @see resumeThread
public void haltThread() {
switch (status) {
case STATUS_RUNNING:
setStatus(STATUS_STOP_PENDING);
break;
case STATUS_HALT_PENDING:
// exception: the thread already is about to halt
break;
case STATUS_STOP_PENDING:
// exception: the thread already is about to stop
break;
default:
// exception: a thread can not be halted, when it is not running
break;
* resume this thread, i.e. resume previously halted work
* @see haltThread
public void resumeThread() {
if(status == STATUS_HALTED || status == STATUS_HALT_PENDING) {
setStatus(STATUS_RUNNING);
else {
// exception: only halted threads or threads that are about to halt can be resumed
* this is the method to prepare a thread to run. It is not implemented in this abstract
* class. Subclasses of <code>InfoThread</code> can implement this method to do anything
* that might be required to put their thread into STATUS_READY. This method is called
* automatically by method <code>start</code>. When implementing this method, it should
* call method <code>fireThreadException</code> accordingly.
* @see start
* @see fireThreadException
protected void prepareThread() {
// does nothing in this abstract class but might be needed in subclasses
* this is the main activity method of this object. It is not implemented in this abstract
* class. Subclasses of <code>InfoThread</code> must implement this method to do something
* meaningful. When implementing this method, it should call methods
* <code>fireThreadProgress</code> and <code>fireThreadException</code> accordingly.
* @return boolean true, if work is left, false if not
* @see fireThreadProgress
* @see fireTreadException
protected abstract boolean work();
* add an <code>InfoTreadListener</code> to this instance of <code>InfoThread</code>
* @param l InfoThreadListener the listener to add
* @see removeInfoThreadListener
public void addInfoThreadListener(InfoThreadListener l) {
listeners.add(l);
* remove an <code>InfoTreadListener</code> from this instance of <code>InfoThread</code>
* @param l InfoThreadListener the listener to remove
public void removeInfoThreadListener(InfoThreadListener l) {
listeners.remove(l);
* notify all <code>InfoThreadListener</code>s of a status change
* @param fromStatus int the status tis thread had before the change
* @param toStatus int the status this thread has now
protected void fireThreadStatusChanged(int fromStatus, int toStatus) {
Enumeration e = listeners.elements();
while(e.hasMoreElements()) {
Object l = e.nextElement();
if(l instanceof InfoThreadListener) {
((InfoThreadListener) l).threadStatusChanged(this, fromStatus, toStatus);
* notify all <code>InfoThreadListener</code>s of an exception in this thread
* @param ex Exception the exception that occurred
protected void fireThreadException(Exception ex) {
Enumeration e = listeners.elements();
while(e.hasMoreElements()) {
Object l = e.nextElement();
if(l instanceof InfoThreadListener) {
((InfoThreadListener) l).threadException(this, ex);
* notify all <code>InfoThreadListener</code>s of the progress of this thread
* @param progressValue long a value indicating the current thread progress
protected void fireThreadProgress(long progressValue) {
Enumeration e = listeners.elements();
while(e.hasMoreElements()) {
Object l = e.nextElement();
if(l instanceof InfoThreadListener) {
((InfoThreadListener) l).threadProgress(this, progressValue, maxValue);
* set the status of this thread and notify all listeners
* @param newStatus int the status this thread is to be changed to
private void setStatus(int newStatus) {
//System.out.println("InfoThread.setStatus oldStatus=" + status + ", newStatus=" + newStatus);
int fromStatus = status;
status = newStatus;
fireThreadStatusChanged(fromStatus, newStatus);
* get the current status of this thread
* @return int the status
public int getStatus() {
return status;
* cleanup before actual destruction.
public void destroy() {
//System.out.println("InfoThread.destroy");
cleanup();
super.destroy();
* cleanup all references this thread maintains
private void cleanup() {
//System.out.println("InfoThread.cleanup");
listeners.removeAllElements();
listeners = null;
/* ----------------------- class fields start ------------------------ */
/** storage for the objects this thread notifies about status changes and progress */
private Vector listeners = new Vector();
/** indicator for the status of this thread */
private int status = STATUS_NONE;
/** maximum value for threadProgress */
protected long maxValue = -1;
/** the idle time inside one work cycle in milliseconds */
protected long idleMillis = 1;
/* ----------------------- class fields end -------------------------- */
/* ----------------------- constants start --------------------------- */
/** constant value indicating that no status has been set so far */
public static final int STATUS_NONE = 0;
/** constant value indicating that the thread is currently initializing */
public static final int STATUS_INITIALIZING = 1;
/** constant value indicating that the thread is ready to run */
public static final int STATUS_READY = 2;
/** constant value indicating that the thread is running */
public static final int STATUS_RUNNING = 3;
/** constant value indicating that the thread is about to halt */
public static final int STATUS_HALT_PENDING = 4;
/** constant value indicating that the thread is halted */
public static final int STATUS_HALTED = 5;
/** constant value indicating that the work of this thread is complete */
public static final int STATUS_WORK_COMPLETE = 6;
/** constant value indicating that the thread is about to stop */
public static final int STATUS_STOP_PENDING = 7;
/** constant value indicating that the thread is stopped */
public static final int STATUS_STOPPED = 8;
/** constant value indicating that the thread is finished */
public static final int STATUS_THREAD_FINISHED = 9;
/* ----------------------- constants end --------------------------- */
}this is the InfoThreadListener interface
* Light Development Java Library
* Copyright (C) 2003, 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package com.lightdev.lib.util;
* An interface classes interested to receive events from objects
* of class <code>InfoThread</code> need to implement.
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
* GNU General Public License,
* for details see file gpl.txt in the distribution
* package of this software
* @version Version 1, October 13, 2004
public interface InfoThreadListener {
* method to receive a status change notification from a thread
* @param thread InfoThread the thread which status changed
* @param fromStatus int the status which the thread had before the change
* @param toStatus int the status which the thread has now
public void threadStatusChanged(InfoThread thread, int fromStatus, int toStatus);
* method to receive a notification about the progress of a thread
* @param thread InfoThread the thread which notified about its progress
* @param progressValue long the value (e.g. 10 if 100 percent completed, 20 of 1 million files processed, etc.)
public void threadProgress(InfoThread thread, long progressValue, long maxValue);
* method to receive a notifiaction about the fact that an exception occurred in a thread
* @param thread InfoThread the thread for which an exception occurred
* @param e Exception the exception that occurred
public void threadException(InfoThread thread, Exception e);
}This is class AudioFileDescriptor
* Light Development Java Library
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package com.lightdev.lib.audio;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.Serializable;
import java.text.DecimalFormat;
* This class models characteristics of an audio file such as the absolute path
* of the file, its tag contents (if any) and the play duration, etc.
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
* GNU General Public License,
* for details see file gpl.txt in the distribution
* package of this software
* @version Version 1, October 13, 2004
public class AudioFileDescriptor implements Serializable, Comparable {
public AudioFileDescriptor(String absolutePath) throws FileNotFoundException, IOException {
load(absolutePath);
public boolean equals(Object o) {
if(o != null && o instanceof AudioFileDescriptor) {
return ((AudioFileDescriptor) o).getAbsolutePath().equalsIgnoreCase(this.getAbsolutePath());
else {
return false;
public void load(String absolutePath) throws FileNotFoundException, IOException {
this.absolutePath = absolutePath;
RandomAccessFile rf = new RandomAccessFile(absolutePath, "r");
if(id3v11Tag == null) {
id3v11Tag = new ID3v11Tag(rf, false);
else {
id3v11Tag.readTag(rf, rf.length() - 128);
rf.close();
public String getAbsolutePath() {
return absolutePath;
public ID3v11Tag getID3v11Tag() {
return id3v11Tag;
public void setID3v11Tag(ID3v11Tag tag) {
this.id3v11Tag = tag;
public String toString() {
DecimalFormat df = new DecimalFormat("00");
return id3v11Tag.getArtist() + ", " + id3v11Tag.getAlbum() + " - " +
df.format(id3v11Tag.getTrackNumber()) + " " + id3v11Tag.getTitle();
* Compares this object with the specified object for order.
* @param o the Object to be compared.
* @return a negative integer, zero, or a positive integer as this object is less than, equal to,
* or greater than the specified object.
* @todo Implement this java.lang.Comparable method
public int compareTo(Object o) {
return toString().compareTo(o.toString());
private String absolutePath;
private ID3v11Tag id3v11Tag;
private transient long duration = -1;
private transient int type = TYPE_UNKNOWN;
public static final transient int TYPE_UNKNOWN = 0;
public static final transient int TYPE_MP3 = 1;
}This is class ID3V11Tag into which the data is actually stored
* Light Development Java Library
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package com.lightdev.lib.audio;
import java.io.File;
import java.io.RandomAccessFile;
import java.io.IOException;
import java.io.Serializable;
import java.text.DecimalFormat;
* This class is a very simple implementation of an ID3v11Tag. It models an ID3 tag
* pretty much the same way as it is physically stored inside an audio file.
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
* GNU General Public License,
* for details see file gpl.txt in the distribution
* package of this software
* @version Version 1, October 13, 2004
public class ID3v11Tag implements Serializable, Comparable {
* construct an ID3v11Tag and read tag content from a given file
* <p>This constructor can be used for cases where a RandomAccessFile has already
* been opened and will be closed elsewhere</p>
* @param rf RandomAccessFile the open file to read from
* @param isAtTagStartPos boolean true, if the file pointer is at the
* position where the ID3 tag starts; when false, the pointer is positioned accordingly here
* @throws IOException
public ID3v11Tag(RandomAccessFile rf, boolean isAtTagStartPos) throws IOException {
if(isAtTagStartPos) {
readTag(rf);
else {
readTag(rf, rf.length() - 128);
* construct an ID3v11Tag and read tag content from a file at a given location
* <p>This constructor opens and closes the audio file for reading</p>
* @param absolutePath String the absolute path to the audio file to open
* @throws IOException
public ID3v11Tag(String absolutePath) throws IOException {
RandomAccessFile rf = new RandomAccessFile(absolutePath, "r");
readTag(rf, rf.length() - 128);
rf.close();
* construct an ID3v11Tag and read tag content from a given file
* <p>This constructor opens and closes the audio file for reading</p>
* @param audioFile File the audio file to read from
* @throws IOException
public ID3v11Tag(File audioFile) throws IOException {
this(audioFile.getAbsolutePath());
* get a string representation of this object
* @return String
public String toString() {
DecimalFormat df = new DecimalFormat("00");
return getArtist() + ", " + getAlbum() + " - " + df.format(getTrackNumber()) + " " + getTitle();
* position to file pointer and read the tag
* @param rf RandomAccessFile the file to read from
* @param jumpPos long the position to jump to (the tag start position)
* @throws IOException
public void readTag(RandomAccessFile rf, long jumpPos) throws IOException {
rf.seek(jumpPos);
readTag(rf);
* read the tag from a given file, assuming the file pointer to be at the tag start position
* @param rf RandomAccessFile the file to read from
* @throws IOException
public void readTag(RandomAccessFile rf) throws IOException {
rf.read(tagBuf);
if(tag.equalsIgnoreCase(new String(tagBuf))) {
rf.read(title);
rf.read(artist);
rf.read(album);
rf.read(year);
rf.read(comment);
rf.read(trackNo);
rf.read(genre);
public String getTitle() {
return new String(title).trim();
public String getArtist() {
return new String(artist).trim();
public String getAlbum() {
return new String(album).trim();
public String getYear() {
return new String(year).trim();
public String getComment() {
return new String(comment).trim();
public int getGenreId() {
try {
int id = new Byte(genre[0]).intValue();
if(id < GENRE_ID_MIN || id > GENRE_ID_MAX) {
return GENRE_ID_OTHER;
else {
return id;
catch(Exception ex) {
return GENRE_ID_OTHER;
public String getGenreName() {
return genreNames[getGenreId()];
public int getTrackNumber() {
try {
return (int) trackNo[0];
catch(Exception e) {
return 0;
* Compares this object with the specified object for order.
* @param o the Object to be compared.
* @return a negative integer, zero, or a positive integer as this object is less than, equal to,
*Hi Franck,
thank you, mate. I did what you suggested (changed class attached) but that did not change the mentioned behaviour.
The first run is approximately 75 seconds with Java option -Xms40m and approx. double without, the second run and all subsequent runs are only 2-3 seconds each (!!!) even when terminating and re-starting the application between thread runs.
I'm pretty clueless about that, any more help on this anyone?
Thanks a lot and best regards
Ulrich
PS: BTW, I forgot to post the class that is filled with data by class CollectionThread, so here it is
* Light Development Playlist Editor
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package com.lightdev.app.playlisteditor.data;
import java.io.File;
import com.lightdev.lib.audio.ID3v11Tag;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.IOException;
import java.io.Serializable;
import com.lightdev.lib.audio.AudioFileDescriptor;
import com.lightdev.lib.ui.SortListModel;
import java.util.Iterator;
* Storage model for audio data.
* <p>
* <code>AudioDataModel</code> can be used to store ID3 tag data collected from
* a directory with audio files to perform queries and reports on the found data.
* </p>
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
* GNU General Public License,
* for details see file gpl.txt in the distribution
* package of this software as well as any licensing notes
* inside this documentation
* @version 1, October 15, 2004
public class AudioDataModel extends SortListModel implements Serializable {
* constructor
public AudioDataModel() {
* add an audio track from a given audio file
* <p>This will attempt to read ID3 tag data from the file.</p>
* @param audioFile File the file to add audio data for
* @throws IOException
public void addTrack(File audioFile) throws IOException {
AudioFileDescriptor afd = new AudioFileDescriptor(audioFile.getAbsolutePath());
if (!data.contains(afd)) {
data.add(afd);
* get all tracks for agiven combination of genre name, artist name and album name. Any of
* the parameters may be null or AudioDataModel.FILTER_ALL
* <p>Ugly code, I know, but it simply hard codes all combinations of the the mentioned
* parameters. Any more elegant implementations welcome.</p>
* @param genreName String a genre name to get tracks for
* @param artistName String an artist name to get tracks for
* @param albumName String an album name to get tracks for
* @return SortListModel the found tracks in a list model
public SortListModel getTracks(String genreName, String artistName, String albumName) {
SortListModel foundTracks = new SortListModel();
Iterator e = data.iterator();
while(e.hasNext()) {
AudioFileDescriptor afd = (AudioFileDescriptor) e.next();
ID3v11Tag tag = afd.getID3v11Tag();
if(genreName == null || genreName.equalsIgnoreCase(FILTER_ALL)) {
if(artistName == null || artistName.equalsIgnoreCase(FILTER_ALL)) {
if (tag.getAlbum().equalsIgnoreCase(albumName))
foundTracks.add(afd);
else {
if(albumName == null || albumName.equalsIgnoreCase(FILTER_ALL)) {
if (tag.getArtist().equalsIgnoreCase(artistName))
foundTracks.add(afd);
else {
if (tag.getArtist().equalsIgnoreCase(artistName) &&
tag.getAlbum().equalsIgnoreCase(albumName))
foundTracks.add(afd);
else {
if(artistName == null || artistName.equalsIgnoreCase(FILTER_ALL)) {
if(albumName == null || albumName.equalsIgnoreCase(FILTER_ALL)) {
if (tag.getGenreName().equalsIgnoreCase(genreName))
foundTracks.add(afd);
else {
if (tag.getGenreName().equalsIgnoreCase(genreName) &&
tag.getAlbum().equalsIgnoreCase(albumName))
foundTracks.add(afd);
else {
if(albumName == null || albumName.equalsIgnoreCase(FILTER_ALL)) {
if (tag.getGenreName().equalsIgnoreCase(genreName) &&
tag.getArtist().equalsIgnoreCase(artistName))
foundTracks.add(afd);
else {
if (tag.getGenreName().equalsIgnoreCase(genreName) &&
tag.getArtist().equalsIgnoreCase(artistName) &&
tag.getAlbum().equalsIgnoreCase(albumName))
foundTracks.add(afd);
foundTracks.sort();
return foundTracks;
* list all artists in this model
* @return SortListModel
public SortListModel listArtists() {
SortListModel artists = new SortListModel();
artists.add(FILTER_ALL);
Iterator e = data.iterator();
while (e.hasNext()) {
ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
String artistName = tag.getArtist();
if (artists.indexOf(artistName) < 0) {
artists.add(artistName);
artists.sort();
return artists;
* list all artists in this model having titles belonging to a given genre
* @param genreName String name of the genre artists are searched for
* @return SortListModel
public SortListModel listArtists(String genreName) {
SortListModel artists = new SortListModel();
artists.add(FILTER_ALL);
Iterator e = data.iterator();
while (e.hasNext()) {
ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
String artistName = tag.getArtist();
String genre = tag.getGenreName();
if (artists.indexOf(artistName) < 0 && genre.equalsIgnoreCase(genreName)) {
artists.add(artistName);
artists.sort();
return artists;
* list all genres in this model
* @return SortListModel
public SortListModel listGenres() {
SortListModel genres = new SortListModel();
genres.add(FILTER_ALL);
Iterator e = data.iterator();
while (e.hasNext()) {
ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
String genreName = tag.getGenreName();
if (genres.indexOf(genreName) < 0) {
genres.add(genreName);
genres.sort();
return genres;
* list all albums in this model
* @return SortListModel
public SortListModel listAlbums() {
SortListModel albums = new SortListModel();
albums.add(FILTER_ALL);
Iterator e = data.iterator();
while (e.hasNext()) {
ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
String albumName = tag.getAlbum();
if (albums.indexOf(albumName) < 0) {
albums.add(albumName);
albums.sort();
return albums;
* list all albums in this model having titles belonging to a given genre
* @param genreName String name of the genre albums are searched for
* @return SortListModel
public SortListModel listAlbums(String genreName) {
SortListModel albums = new SortListModel();
albums.add(FILTER_ALL);
Iterator e = data.iterator();
while (e.hasNext()) {
ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
String albumName = tag.getAlbum();
String genre = tag.getGenreName();
if (albums.indexOf(albumName) < 0 && genre.equalsIgnoreCase(genreName)) {
albums.add(albumName);
albums.sort();
return albums;
* list all albums in this model having titles belonging to a given genre and artist
* @param genreName String name of the genre albums are searched for
* @param artistName String name of the artist albums are searched for
* @return SortListModel
public SortListModel listAlbums(String genreName, String artistName) {
SortListModel albums = new SortListModel();
albums.add(FILTER_ALL);
Iterator e = data.iterator();
while (e.hasNext()) {
ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
String albumName = tag.getAlbum();
String genre = tag.getGenreName();
String artist = tag.getArtist();
if(genreName == null || genreName.equalsIgnoreCase(FILTER_ALL)) {
if (albums.indexOf(albumName) < 0 &&
artist.equalsIgnoreCase(artistName))
albums.add(albumName);
else {
if (albums.indexOf(albumName) < 0 &&
genre.equalsIgnoreCase(genreName) &&
artist.equalsIgnoreCase(artistName))
albums.add(albumName);
albums.sort();
return albums;
* get the number of audio tracks stored in this data model
* @return int the number of tracks
public int getTrackCount() {
return data.size();
/** constant to select all items of a given part */
public static final String FILTER_ALL = " all";
}...and here the changed CollectionThread now caching found File objects in a vector
* Light Development Playlist Editor
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package com.lightdev.app.playlisteditor.data;
import com.lightdev.lib.util.InfoThread;
import java.io.File;
import java.util.Vector;
import java.util.Enumeration;
* A class to collect audio data from a given storage location.
* <p>
* <code>CollectionThread</code> uses ID3 tag information to gain data.
* </p>
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
* GNU General Public License,
* for details see file gpl.txt in the distribution
* package of this software as well as any licensing notes
* inside this documentation
* @version 1, October 13, 2004
public class CollectionThread extends InfoThread {
* constructor
* @param model AudioDataModel the data model to collect data to
public CollectionThread(AudioDataModel model) {
this.model = model;
* constructor, creates a new empty AudioDataModel
public CollectionThread() {
this(new AudioDataModel());
* set the data model to collect data to
* @param model AudioDataModel the model to collect data to
public void setModel(AudioDataModel model) {
this.model = model;
* get the data model associated to this thread
* @return AudioDataModel the data model
public AudioDataModel getModel() {
return model;
* set the directory to collect data from
* @param rootDir File the directory to collect data from
public void setRootDirectory(File rootDir) {
this.rootDir = rootDir;
* this is the method to prepare a thread to run.
protected void prepareThread() {
maxValue = -1;
filesProcessed = 0;
innerCount = 0;
fileList = new Vector();
* do the actual work of this thread, i.e. iterate through a given directory
* structure and collect audio data
* @return boolean true, if work is left
protected boolean work() {
boolean workIsLeft = true;
if(getStatus() < STATUS_HALT_PENDING) {
countElements(rootDir.listFiles());
if(getStatus() < STATUS_HALT_PENDING) {
workIsLeft = collect(); //collect(rootDir.listFiles());
fileList.clear();
fileList = null;
return workIsLeft;
* count the elements in a given file array including its subdirectories
* @param files File[]
private void countElements(File[] files) {
int i = 0;
while (i < files.length && getStatus() < STATUS_HALT_PENDING) {
File file = files;
if (file.isDirectory()) {
countElements(file.listFiles());
else {
fileList.add(file);
i++;
maxValue++;
* read data into model
* @param files File[] the file array representing the content of a given directory
* @return boolean true, if work is left
private boolean collect(/*File[] files*/) {
Enumeration files = fileList.elements();
while(files.hasMoreElements() && getStatus() < STATUS_HALT_PENDING) {
File file = (File) files.nextElement();
try {
model.addTrack(file);
catch(Exception e) {
fireThreadException(e);
filesProcessed++;
if(++innerCount > 99) {
innerCount = 0;
fireThreadProgress(filesProcessed);
return false;
int i = 0;
while(i < files.length && getStatus() < STATUS_HALT_PENDING) {
File file = files[i];
if(file.isDirectory()) {
collect(file.listFiles());
else if(file.getName().toLowerCase().endsWith("mp3")) {
try {
model.addTrack(file);
catch(Exception e) {
fireThreadException(e);
i++;
filesProcessed++;
fireThreadProgress(filesProcessed);
return (i<files.length);
/** the directory to collect data from */
private File rootDir;
/** the data model to collect data to */
private AudioDataModel model;
/** the number of files this thread processed so far while it is running */
private long filesProcessed = 0;
/** a list to temporary store found files */
private Vector fileList;
/** counter to determine when to fire progress messages */
private int innerCount = 0; -
Need some help in creating Search Help for standard screen/field
I need some help in adding a search-help to a standard screen-field.
Transaction Code - PP01,
Plan Version - Current Plan (PLVAR = '01'),
Object Type - Position ( OTYPE = 'S'),
Click on Infotype Name - Object ( Infotype 1000) and Create.
I need to add search help to fields Object Abbr (P1000-SHORT) / Object Name (P1000-STEXT).
I want to create one custom table with fields, Position Abb, Position Name, Job. Position Abb should be Primary Key. And when object type is Position (S), I should be able to press F4 for Object Abb/Object Name fields and should return Position Abbr and Position Name.
I specify again, I have to add a new search help to standard screen/field and not to enhance it.
This is HR specific transaction. If someone has done similar thing with some other transation, please let me know.
There is no existing search help for these fields. If sm1 ever tried or has an idea how to add new search help to a standard screen/field.
It's urgent.
Thanks in advace. Suitable answers will be rewardedHi Pradeep,
Please have a look into the below site which might be useful
Enhancing a Standard Search Help
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/daeda0d7-0701-0010-8caa-
edc983384237
http://help.sap.com/saphelp_nw04/helpdata/en/cf/21ee93446011d189700000e8322d00/frameset.htm
A search help exit is a function module for making the input help process described by the search help more flexible than possible with the standard version.
This function module must have the same interface as function module F4IF_SHLP_EXIT_EXAMPLE. The search help exit may also have further optional parameters (in particular any EXPORTING parameters).
A search help exit is called at certain timepoints in the input help process.
Note: The source text and long documentation of the above-specified function module (including the long documentation about the parameters) contain information about using search help exits.
Function modules are provided in the function library for operations that are frequently executed in search help exits. The names of these function modules begin with the prefix F4UT_. These function modules can either be used directly as search help exits or used within other search help exits. You can find precise instructions for use in the long documentation for the corresponding function module.
During the input help process, a number of timepoints are defined that each define the beginning of an important operation of the input help process.
If the input help process is defined with a search help having a search help exit, this search help exit is called at each of these timepoints. If required, the search help exit can also influence the process and even determine that the process should be continued at a different timepoint.
timepoints
The following timepoints are defined:
1. SELONE
Call before selecting an elementary search help. The possible elementary search helps are already in SHLP_TAB. This timepoint can be used in a search help exit of a collective search help to restrict the selection possibilities for the elementary search helps.
Entries that are deleted from SHLP_TAB in this step are not offered in the elementary search help selection. If there is only one entry remaining in SHLP_TAB, the dialog box for selecting elementary search helps is skipped. You may not change the next timepoint.
The timepoint is not accessed again if another elementary search help is to be selected during the dialog.
2. PRESEL1
After selecting an elementary search help. Table INTERFACE has not yet been copied to table SELOPT at this timepoint in the definition of the search help (type SHLP_DESCR_T). This means that you can still influence the attachment of the search help to the screen here. (Table INTERFACE contains the information about how the search help parameters are related to the screen fields).
3. PRESEL
Before sending the dialog box for restricting values. This timepoint is suitable for predefining the value restriction or for completely suppressing or copying the dialog.
4. SELECT
Before selecting the values. If you do not want the default selection, you should copy this timepoint with a search help exit. DISP should be set as the next timepoint.
5. DISP
Before displaying the hit list. This timepoint is suitable for restricting the values to be displayed, e.g. depending on authorizations.
6. RETURN (usually as return value for the next timepoint)
The RETURN timepoint should be returned as the next step if a single hit was selected in a search help exit.
It can make sense to change the F4 flow at this timepoint if control of the process sequence of the Transaction should depend on the selected value (typical example: setting SET/GET parameters). However, you should note that the process will then depend on whether a value was entered manually or with an input help.
7. RETTOP
You only go to this timepoint if the input help is controlled by a collective search help. It directly follows the timepoint RETURN. The search help exit of the collective search help, however, is called at timepoint RETTOP.
8. EXIT (only for return as next timepoint)
The EXIT timepoint should be returned as the next step if the user had the opportunity to terminate the dialog within the search help exit.
9. CREATE
The CREATE timepoint is only accessed if the user selects the function "Create new values". This function is only available if field CUSTTAB of the control string CALLCONTROL was given a value not equal to SPACE earlier on.
The name of the (customizing) table to be maintained is normally entered there. The next step returned after CREATE should be SELECT so that the newly entered value can be selected and then displayed.
10. APP1, APP2, APP3
If further pushbuttons are introduced in the hit list with function module F4UT_LIST_EXIT, these timepoints are introduced. They are accessed when the user presses the corresponding pushbutton.
Note: If the F4 help is controlled by a collective search help, the search help exit of the collective search help is called at timepoints SELONE and RETTOP. (RETTOP only if the user selects a value.) At all other timepoints the search help exit of the selected elementary search help is called.
If the F4 help is controlled by an elementary search help, timepoint RETTOP is not executed. The search help exit of the elementary search help is called at timepoint SELONE (at the
F4IF_SHLP_EXIT_EXAMPLE
This module has been created as an example for the interface and design of Search help exits in Search help.
All the interface parameters defined here are mandatory for a function module to be used as a search help exit, because the calling program does not know which parameters are actually used internally.
A search help exit is called repeatedly in connection with several
events during the F4 process. The relevant step of the process is passed on in the CALLCONTROL step. If the module is intended to perform only a few modifications before the step, CALLCONTROL-STEP should remain unchanged.
However, if the step is performed completely by the module, the following step must be returned in CALLCONTROL-STEP.
The module must react with an immediate EXIT to all steps that it does not know or does not want to handle.
Hope this info will help you.
***Reward points if found useful
Regards,
Naresh -
I need a help !!! Please ,I dropped my iPhone 5 in toilet and I didn't get fast maybe 5mins before I get it because I didn't notice drop it and it won't work now it's almost 1week I'm waiting it still it don't work ... But when I plug my charger it goes light and show up apple logo and die again I don't know what to do and it's so expensive here at Japan pls.. Help maybe there still way to get it work again
Thank you ,ReanAt this point it's clear that it's been damaged and will need to be take or sent to Apple for replacement.
Regards. -
My airport problem has returned big time --Need some Help!!
Aloha once again:
I though that this was fixed by simply changing channels on my airport router, but that fix only lasted for a few days, but now it's back and even worse. Let me give you some background on this problem. Here's my original message concerning the problem:
I have my Airport Router connected to the Internet via DSLcable. I then tie my two computers into the internet via their airport cards. For about 6 months this system has been working just fine. Recently my desktop computer quit listening to the router and can no longer connect to the internet. It shows no signal strength and the name of the network on the Airport is not seen in the "connect to internet" panel. The same Airport works just fine on my LapTop and I am using it right now to get this message off to the internet.
I have fixed permissions, removed the airport card and cleaned the connector, the antenna plug and removed the system configuration folder from library preferences all to no avail!
This problem has been hounding me, intermittently, for over a year now What can I do to remedy this??? HELP!!!!
Dan Page
Maui, Hawaii
The suggestion to change channels, that came from this original request, worked but just for a very short time. Now I have to shut down my computer overnight to get connected and then it only lasts for several hours and the connection quits.
I thought maybe heat was a problem, but the last time it happened I opened the computer and played a large fan right on the card. This did not help. I shut it down for the night and it was fine the next morning for about 2 hours.
One new data point; if I turn off just the airport on my laptop computer overnight, that will fix the problem for a short time also.
Still need some help!!!
DanFirst, power off both the Time Capsule and AirPort Express.
Wait a few minutes, then power up the Time Capsule first, and let it run for a few minutes.
Temporarily, move the AirPort Express to the same room or close proximity to the AirPort Express and power it up.
If the Express powers up correctly, power it off again and move it approximately half the distance between the Time Capsule and the general area that needs more wireless coverage. Try to minimize obstructions like walls, ceiling, heavy furniture, etc as much as possible.
Please report on your results.
Maybe you are looking for
-
How to specify tablespace for a primary key inde in create table statement
How to specify the tablespace for a primary key index in a create table statement? Does the following statement is right? CREATE TABLE 'GPS'||TO_CHAR(SYSDATE+1,'YYYYMMDD') ("ID" NUMBER(10,0) NOT NULL ENABLE, "IP_ADDRESS" VARCH
-
Title of Page from Pages library not appearing as expected from custom pagelayouts VS solution
hi, i have created a custom web page from pages library using custom page layouts library with the help of a wsp. here is my sample page. now my issue is, when i go to the page / the title of the page is not displaying correctly. as per my requirem
-
Duplicate file handling using Module
Hi All The Scenario is like this------ XI is picking a files from FTP location. Duplicate files are also getting picked by XI. To handle this i have written a module using NWDS which is finding it out wheather the file is duplicate or not. If the fil
-
Folio producer is not giving me the "Public" option when trying to publish my folios!
I have created everything and i am ready to make a .zip file but I thought you had to make your piece "public" after you selected "publish?" It will only give me the private option and i am trying to place this in the app store. Thanks
-
Problem, change the language with dynamic text
I am looking for a way to change simply the language of my flash animation I work with flash cs4 of course I got Mylocale.as: import mx.lang.Locale; class MyLocale extends mx.lang.Locale { static function start():Void { var langCode:String = xmlLan