| static initialization of arrays |
|
 |
Index ‹ java-programmer
|
- Previous
- 2
- Tomcat 5.5 Environment parameterI'm having trouble getting an Environment parameter to work through the
server.xml file of Tomcat 5.5.
My server.xml file looks like this:
<Server port="8005" shutdown="SHUTDOWN">
...
<Service name="Catalina">
...
<Engine name="Catalina" defaultHost="localhost">
...
<Host
name="localhost"
appBase="C:/Development/Tomcat/deployment/tomcat5.5/webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<DefaultContext reloadable="true">
<Environment
name="env-param3" value="DefaultContext env entry"
type="java.lang.String" override="false"/>
</DefaultContext>
<Realm className="org.apache.catalina.realm.MemoryRealm"
debug="0" digest="SHA"
pathname="conf/unleashed-users.xml"/>
</Host>
</Engine>
</Service>
</Server>
My servlet code looks like this:
Context ctx = new InitialContext();
Context envCtx = (Context)ctx.lookup( "java:comp/env" );
out.println( envCtx.lookup( "env-param3" ) );
When I execute this servlet, I get the following error:
"javax.naming.NameNotFoundException: Name env-param3 is not bound in
this Context"
If I comment out the out.println(), it runs fine. Any ideas what I'm
doing wrong?
- 2
- Need Javahi i just reinstalled my windows xp and went to go on a site on the internet
and it said i need to install java.
any ideas where to get this from?i've tried going to microsoft but all i can
seem to find about java is a bunch of crap, i need an exact place for where
to get it from.
any ideas would help
cheers
blair
- 2
- Classes in jar can't load - why?I've just created a jar-file containing some classes that I've made. I have
made this jar file in Idea IntelliJ's AntBuild. However, when I try to use
the jar file in a project I get the following message:
cannot access Teleadress.DMP2004.DTDClasses.CompanyResult
bad class file
D:\IdeaProjects\DTDFileTest\lib\DMP2004_DTDClasses.jar(Teleadress/DMP2004/DT
DClasses/CompanyResult.class)
class file contains wrong Class: CompanyResult
Please remove or make sure it appears in the correct subdirectory of the
classpath
The thing is that it works perfectly when I open the jar-file with WinZip
and copy all the class-files to the classes folder in my project. Moreover
when I write Teleadress.DMP2004.DTDClasses. the autocomplete function shows
a list of all my classes including CompanyResult. However, as soon as I
chose CompanyResult it turns red meaning it can't be found. This is also the
case with all the other classes in my jar.
Why is this? I've checked other jars and the only thing that is different is
the manifest-file which in my case is more or less empty.
- 2
- why can't load the picture?
can't load the picture
why?
thanks!
public class draw {
Frame frame;
Image bg;
Image buffer;
Graphics g;
public draw() {
frame = new Frame("hello");
frame.setSize(500, 500);
frame.show();
bg = Toolkit.getDefaultToolkit().getImage("cdog1.gif");
buffer = frame.createImage(400, 400);
g = buffer.getGraphics();
g.drawImage(bg, 0, 0, frame);
frame.getGraphics().drawImage(buffer, 0, 0, frame);
}
public static void main(String args[]) {
new draw();
}
}
- 2
- JMenusHello everyone! I was hoping I could get a few pointers on the code below.
Basically the program is using JMenus. When the program first runs the only
menu that is there is Session wherein users may login to the system. There
is a tab for an existing user and a new user. The new user is working
alright. However, existing user is not. I am not quite sure how to get
around that one. I have to check the ArrayList Users to find out if the
password entered matches one in there or not, if it does then they enter the
system, if not is asks them to enter the correct password. I have that in a
for loop right now, but that is not working, does anyone have any ideas for
me? This part of the code is in passwordfield.addActionListener and signin.
addActionListener. Next after a user enters the system 3 more menus are
available...Read File, Sales Data Entry, and Write File. Read File has two
tabs - Text File and Object File. Text File just reads a text file and puts
in the Salesman ArrayList and Object File reads in objects and prints them to
the text area. Write File has two tabs - Write Text File and Write Object
File. Write Text File writes the Salesman Array List to a text file and
prints it to the text area and Write Object File writes a text file as
objects to another file. Then Sales Data Entry has two tabs - Update Current
Salesman and Enter New Salesman. I actually haven't put the calculations in
the code yet, but they will basically add the salesman data to the Salesman
ArrayList.
So the problems I seem to having other than the password part above are:
(1) with currencyFormat.format(total) in writetextFile() and readobjectFile()
it is not allowing it to put it in currency format and I don't really
understand that. I have import java.text.NumberFormat; in SalesMenu(). Does
anyone have any idea of why this might be happening?
(2) output (the textarea) is not being read in the writetextFile() and
readobjectFile()...i am sure this is something simple I am just not realizing.
Does anyone know why it's not allowing me to print to the output?
I realize this is a long piece of code, but if anyone has the time to help me
out I would greatly appreciate it. I didn't know how much of the code to
post, so I just decided to post the whole thing. Again, I haven't done the
calculations yet, but I am going to work on those right now. Thank you for
any tips you may be able to give! I appreciate it!
[code]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.NumberFormat;
import java.io.*;
import java.util.*;
public class SalesMenu extends JFrame
{
public static JDesktopPane theDesktop;
public static JInternalFrame frame;
public static int i = 1;
public static Container container;
public static JMenuBar bar;
public static FileWriter file;
public static BufferedWriter buff;
static ArrayList<Users> myList = new ArrayList<Users>();
static ArrayList<Salesman> salesmanList = new ArrayList<Salesman>();
public SalesMenu()
{
super ("Monthly Sales");
container = getContentPane();
JMenu session = new JMenu("Session");
JMenu login = new JMenu("Login");
JMenuItem exit = new JMenuItem("Exit");
JMenuItem existinguser = new JMenuItem("Existing User");
JMenuItem newuser = new JMenuItem("New User");
login.add(existinguser);
login.add(newuser);
session.add(login);
session.add(exit);
bar = new JMenuBar();
bar.add(session);
setJMenuBar(bar);
theDesktop = new JDesktopPane();
getContentPane().add(theDesktop);
existinguser.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame = new JInternalFrame("System Login", true, true, true, true);
Container c = frame.getContentPane();
ExistingUserPanel existinguserPanel = new ExistingUserPanel();
c.add(existinguserPanel);
frame.pack();
theDesktop.add(frame);
frame.setVisible(true);
}
});
newuser.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame = new JInternalFrame("Create New Account", true, true, true, true);
Container c = frame.getContentPane();
NewUserPanel newuserPanel = new NewUserPanel();
c.add(newuserPanel);
frame.pack();
theDesktop.add(frame);
frame.setVisible(true);
}
});
exit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(1);
}
});
}
public static void main (String args[])
{
SalesMenu app = new SalesMenu();
app.setSize(700,450);
app.setVisible(true);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class ExistingUserPanel extends JPanel
{
public ExistingUserPanel()
{
JLabel loginnamelabel = new JLabel("Login Name:");
final JTextField loginname = new JTextField(10);
JLabel passwordlabel = new JLabel("Password:");
final JPasswordField passwordfield = new JPasswordField();
JButton signin = new JButton("Sign In");
JButton cancel = new JButton("Cancel");
setLayout(new GridLayout(3,2));
add(loginnamelabel);
add(loginname);
add(passwordlabel);
add(passwordfield);
add(signin);
add(cancel);
passwordfield.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String passwd = new String(passwordfield.getPassword());
for (Users user : myList)
{
if(passwd.equals(user.getPassword()))
{
JOptionPane.showMessageDialog(null, "Welcome back, " + loginname.
getText() + "!" + "\n\n" + "You are now logged in.",
"Login Successful", JOptionPane.INFORMATION_MESSAGE);
passwordfield.setText("");
SessionThread newSession = new SessionThread("thread" + String.valueOf
(SalesMenu.i), SalesMenu.container);
SalesMenu.i++;
newSession.start();
SalesMenu.frame.dispose();
}
else if(passwd.equals("terminator"))
{
JOptionPane.showMessageDialog(null, "Hello, welcome to the
System!" + "\n\n" + "You are now logged in.",
"Login Successful", JOptionPane.INFORMATION_MESSAGE);
passwordfield.setText("");
SessionThread newSession = new SessionThread("thread" + String.valueOf
(SalesMenu.i), SalesMenu.container);
SalesMenu.i++;
newSession.start();
SalesMenu.frame.dispose();
}
else
{
JOptionPane.showMessageDialog(null, "The password entered is invalid.
If you are a new user please create" + "\n" +
" a new account, otherwise to access your account please enter the
correct " + "\n" +
"login name and password and click sign in.", "Password Invalid",
JOptionPane.INFORMATION_MESSAGE);
loginname.setText("");
passwordfield.setText("");
loginname.requestFocus();
}
}
}
});
signin.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
for (Users user : myList)
{
String passwd = new String(passwordfield.getPassword());
if (passwd.equals(user.getPassword()))
{
JOptionPane.showMessageDialog(null, "Welcome back, " + loginname.
getText() + "!" + "\n\n" + "You are now logged in.",
"Login Successful", JOptionPane.INFORMATION_MESSAGE);
passwordfield.setText("");
SessionThread newSession = new SessionThread("thread" + String.valueOf
(SalesMenu.i), SalesMenu.container);
SalesMenu.i++;
newSession.start();
SalesMenu.frame.dispose();
}
else if (passwd.equals("terminator"))
{
JOptionPane.showMessageDialog(null, "Welcome back, " + loginname.
getText() + "!" + "\n\n" + "You are now logged in.",
"Login Successful", JOptionPane.INFORMATION_MESSAGE);
passwordfield.setText("");
SessionThread newSession = new SessionThread("thread" + String.valueOf
(SalesMenu.i), SalesMenu.container);
SalesMenu.i++;
newSession.start();
SalesMenu.frame.dispose();
}
else
JOptionPane.showMessageDialog(null, "The password entered is invalid.
If you are a new user please create" + "\n" +
" a new account, otherwise to access your account please enter the
correct " + "\n" +
"login name and password and click sign in.", "Password Invalid",
JOptionPane.INFORMATION_MESSAGE);
loginname.setText("");
passwordfield.setText("");
loginname.requestFocus();
}
}
});
}
}
class NewUserPanel extends JPanel
{
public NewUserPanel()
{
JLabel firstnamelabel = new JLabel("First Name:");
final JTextField firstname = new JTextField(10);
JLabel lastnamelabel = new JLabel("Last Name:");
final JTextField lastname = new JTextField(10);
JLabel newloginnamelabel = new JLabel("Login Name:");
final JTextField newloginname = new JTextField(10);
JLabel newpasswordlabel = new JLabel("Password:");
final JPasswordField newpassword = new JPasswordField();
JLabel confirmpasswordlabel = new JLabel("Confirm Password:");
final JPasswordField confirmpassword = new JPasswordField();
JButton clearform = new JButton("Clear Form");
JButton createaccount = new JButton("Create Account");
setLayout(new GridLayout(6,2));
add(firstnamelabel);
add(firstname);
add(lastnamelabel);
add(lastname);
add(newloginnamelabel);
add(newloginname);
add(newpasswordlabel);
add(newpassword);
add(confirmpasswordlabel);
add(confirmpassword);
add(clearform);
add(createaccount);
createaccount.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String newpasswd = new String(newpassword.getPassword());
String password = new String(confirmpassword.getPassword());
if(newpasswd.equals(password))
{
JOptionPane.showMessageDialog(null, firstname.getText() + " " +
lastname.getText() + ", your login information is:" + "\n\n" +
"Login Name: " + newloginname.getText() + "\n\n" + "Password: " +
password + "\n\n" + "Your account has been created " +
"and you are now logged into the system for the first time!", "New
Account User", JOptionPane.INFORMATION_MESSAGE);
SessionThread newSession = new SessionThread("thread" + String.valueOf
(SalesMenu.i), SalesMenu.container);
SalesMenu.i++;
newSession.start();
SalesMenu.frame.dispose();
myList.add(new Users(newloginname.getText(), password));
}
else
{
JOptionPane.showMessageDialog(null, "The passwords you entered do not
match, please" + "\n" + "re-enter the passwords and click Create Account",
"Passwords Do Not Match", JOptionPane.INFORMATION_MESSAGE);
newpassword.setText("");
confirmpassword.setText("");
newpassword.requestFocus();
}
}
});
confirmpassword.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String newpasswd = new String(newpassword.getPassword());
String loginpassword = new String(confirmpassword.getPassword());
if(newpasswd.equals(loginpassword))
{
JOptionPane.showMessageDialog(null, firstname.getText() + " " +
lastname.getText() + ", your login information is:" + "\n\n" +
"Login Name: " + newloginname.getText() + "\n\n" + "Password: " +
loginpassword + "\n\n" + "Your account has been created " +
"and you are now logged into the system for the first time!", "New
Account User", JOptionPane.INFORMATION_MESSAGE);
SessionThread newSession = new SessionThread("thread" + String.valueOf
(SalesMenu.i), SalesMenu.container);
SalesMenu.i++;
newSession.start();
SalesMenu.frame.dispose();
myList.add(new Users(newloginname.getText(), loginpassword));
}
else
{
JOptionPane.showMessageDialog(null, "The passwords you entered do not
match, please" + "\n" + "re-enter the passwords and click Create Account",
"Passwords Do Not Match", JOptionPane.INFORMATION_MESSAGE);
newpassword.setText("");
confirmpassword.setText("");
newpassword.requestFocus();
}
}
});
clearform.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
firstname.setText("");
lastname.setText("");
newloginname.setText("");
newpassword.setText("");
confirmpassword.setText("");
firstname.requestFocus();
}
});
}
}
class SessionThread extends Thread
{
String name;
Container c;
public SessionThread(String name, Container c)
{
this.name = name;
this.c = c;
}
public void run()
{
System.out.println(name);
GUI app = new GUI();
app.setSize(700,450);
app.setVisible(true);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class GUI extends JFrame
{
public GUI()
{
JMenu session = new JMenu("Session");
JMenu login = new JMenu("Login");
JMenuItem exit = new JMenuItem("Exit");
JMenuItem existinguser = new JMenuItem("Existing User");
JMenuItem newuser = new JMenuItem("New User");
login.add(existinguser);
login.add(newuser);
session.add(login);
session.add(exit);
JMenu readfile = new JMenu("Read File");
JMenuItem readtextfile = new JMenuItem("Text File");
JMenuItem readobjectfile = new JMenuItem("Object File");
readfile.add(readtextfile);
readfile.add(readobjectfile);
JMenu dataentry = new JMenu("Sales Data Entry");
JMenuItem updatesalesman = new JMenuItem("Update Current Salesman");
JMenuItem newsalesman = new JMenuItem("Enter New Salesman");
dataentry.add(updatesalesman);
dataentry.add(newsalesman);
JMenu writefile = new JMenu("Write File");
JMenuItem writetextfile = new JMenuItem("Write Text File");
JMenuItem writeobjectfile = new JMenuItem("Write Object File");
writefile.add(writetextfile);
writefile.add(writeobjectfile);
bar = new JMenuBar();
bar.add(session);
bar.add(readfile);
bar.add(dataentry);
bar.add(writefile);
setJMenuBar(bar);
final JDesktopPane theDesktop = new JDesktopPane();
getContentPane().add(theDesktop);
readtextfile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
readTextFile();
}
});
readobjectfile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame = new JInternalFrame("Written Text File", true, true, true, true);
Container c = frame.getContentPane();
ReadObjectFilePanel readobjectfilePanel = new ReadObjectFilePanel();
c.add(readobjectfilePanel);
frame.pack();
theDesktop.add(frame);
frame.setVisible(true);
frame.setSize(300,300);
}
});
updatesalesman.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame = new JInternalFrame("Update Current Salesman", true, true, true,
true);
Container c = frame.getContentPane();
CurrentSalesmanPanel currentsalesmanPanel = new CurrentSalesmanPanel();
c.add(currentsalesmanPanel);
frame.pack();
theDesktop.add(frame);
frame.setVisible(true);
}
});
newsalesman.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame = new JInternalFrame("Enter New Salesman", true, true, true, true)
;
Container c = frame.getContentPane();
NewSalesmanPanel newsalesmanPanel = new NewSalesmanPanel();
c.add(newsalesmanPanel);
frame.pack();
theDesktop.add(frame);
frame.setVisible(true);
}
});
writetextfile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame = new JInternalFrame("Written Text File", true, true, true, true);
Container c = frame.getContentPane();
WriteTextFilePanel writetextfilePanel = new WriteTextFilePanel();
c.add(writetextfilePanel);
frame.pack();
theDesktop.add(frame);
frame.setVisible(true);
}
});
writeobjectfile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
writeObjectFile();
}
});
}
}
public void readTextFile()
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = fileChooser.showOpenDialog(this);
if (result==JFileChooser.CANCEL_OPTION)
System.exit(1);
File fileName = fileChooser.getSelectedFile();
if ((fileName==null) || (fileName.getName().equals("")))
{
JOptionPane.showMessageDialog(this,"Invalid File Name");
System.exit(1);
}
else
{
String line;
ClassificationLevel level;
double sales = 0.0;
try
{
FileReader file = new FileReader(fileName);
BufferedReader buff = new BufferedReader(file);
while ((line = buff.readLine())!= null)
{
String[] elements = line.split("&");
String name = elements [0];
double sales1 = 0.0;
double sales2 = 0.0;
double sales3 = 0.0;
double sales4 = 0.0;
double sales5 = 0.0;
sales1 = Double.parseDouble(elements[1]) * 2.98;
sales2 = Double.parseDouble(elements[2]) * 4.50;
sales3 = Double.parseDouble(elements[3]) * 9.98;
sales4 = Double.parseDouble(elements[4]) * 4.49;
sales5 = Double.parseDouble(elements[5]) * 6.87;
level = ClassificationLevel.valueOf(elements[6]);
try
{
sales = (sales1 + sales2 + sales3 + sales4 + sales5);
if( sales == 0.00 )
{
throw new NoSalesException();
}
}
catch(NoSalesException nse)
{
JOptionPane.showMessageDialog(null, name + " has no Sales!!", "Sales
Equals Zero",
JOptionPane.WARNING_MESSAGE);
}
sales = sales + (sales * level.getBonus());
salesmanList.add(new Salesman(name, sales));
}
buff.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
JOptionPane.showMessageDialog(this, " You file has been read!!", "Text File
Read", JOptionPane.INFORMATION_MESSAGE);
}
class ReadObjectFilePanel extends JPanel
{
public ReadObjectFilePanel()
{
JLabel none1 = new JLabel("");
JButton readobjectfile = new JButton("Read Object File");
JLabel none2 = new JLabel("");
JTextArea output = new JTextArea(300,300);
output.setVisible(true);
output.setRows(20);
output.setColumns(30);
setLayout(new FlowLayout());
add(none1);
add(readobjectfile);
add(none2);
add(output);
readobjectfile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
readobjectFile();
}
});
}
}
public void readobjectFile()
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = fileChooser.showOpenDialog(this);
if (result==JFileChooser.CANCEL_OPTION)
System.exit(1);
File fileName = fileChooser.getSelectedFile();
if ((fileName==null) || (fileName.getName().equals("")))
{
JOptionPane.showMessageDialog(this,"Invalid File Name");
System.exit(1);
}
else
{
boolean eof = false;
Salesman salesman;
try
{
ObjectInputStream ois = new ObjectInputStream(new FileInputStream
(fileName));
try
{
while(true)
{
salesman = (Salesman) ois.readObject();
salesmanList.add(salesman);
Collections.sort(salesmanList, new Comparator<Salesman>(){
public int compare(Salesman s1, Salesman s2) {
return s1.getName().compareTo(s2.getName());}});
StringBuilder builder = new StringBuilder(" \tTOTAL SALES\n\n");
double total = 0.00;
for (Salesman s : salesmanList)
{
builder.append(" " + s.toString() +"\n");
total += s.getSales();
}
builder.append("\n Total\t\t " + currencyFormat.format(total))
;
output.setText(builder.toString());
}
}
finally
{
ois.close();
}
}
catch(EOFException eofe)
{
System.out.println("End of file");
}
catch (IOException ioe )
{
ioe.printStackTrace();
}
catch (ClassNotFoundException cnfe)
{
cnfe.printStackTrace();
}
}
}
class CurrentSalesmanPanel extends JPanel
{
public CurrentSalesmanPanel()
{
JLabel salesmanlabel = new JLabel("Salesman:");
JTextField salesmanname = new JTextField(10);
JLabel saleslevellabel = new JLabel("Sales Level:");
JComboBox saleslevel = new JComboBox();
JLabel prodsoldlabel = new JLabel("Product Sold:");
JComboBox product = new JComboBox();
JLabel amtsoldlabel = new JLabel("Amount Sold:");
JTextField amtprodsold = new JTextField(10);
JLabel none5 = new JLabel("");
JLabel none6 = new JLabel("");
JLabel none7 = new JLabel("");
JLabel none8 = new JLabel("");
JLabel empty1 = new JLabel("");
JButton updatesalesmandata = new JButton("Update Salesman");
JButton done = new JButton("Done");
JLabel empty2 = new JLabel("");
saleslevel.addItem("");
saleslevel.addItem("Entry");
saleslevel.addItem("Junior");
saleslevel.addItem("Senior");
product.addItem("");
product.addItem("Product 1");
product.addItem("Product 2");
product.addItem("Product 3");
product.addItem("Product 4");
product.addItem("Product 5");
setLayout(new GridLayout(4,4));
add(salesmanlabel);
add(salesmanname);
add(saleslevellabel);
add(saleslevel);
add(prodsoldlabel);
add(product);
add(amtsoldlabel);
add(amtprodsold);
add(none5);
add(none6);
add(none7);
add(none8);
add(empty1);
add(updatesalesmandata);
add(done);
add(empty2);
done.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(1);
}
});
}
}
class NewSalesmanPanel extends JPanel
{
public NewSalesmanPanel()
{
JLabel salesmanlabel = new JLabel("Salesman:");
JTextField salesmanname = new JTextField(10);
JLabel saleslevellabel = new JLabel("Sales Level:");
JComboBox saleslevel = new JComboBox();
JLabel prodsoldlabel = new JLabel("Product Sold:");
JComboBox product = new JComboBox();
JLabel amtsoldlabel = new JLabel("Amount Sold:");
JTextField amtprodsold = new JTextField(10);
JLabel none5 = new JLabel("");
JLabel none6 = new JLabel("");
JLabel none7 = new JLabel("");
JLabel none8 = new JLabel("");
JLabel empty1 = new JLabel("");
JButton updatesalesmandata = new JButton("Update Salesman");
JButton done = new JButton("Done");
JLabel empty2 = new JLabel("");
saleslevel.addItem("");
saleslevel.addItem("Entry");
saleslevel.addItem("Junior");
saleslevel.addItem("Senior");
product.addItem("");
product.addItem("Product 1");
product.addItem("Product 2");
product.addItem("Product 3");
product.addItem("Product 4");
product.addItem("Product 5");
setLayout(new GridLayout(4,4));
add(salesmanlabel);
add(salesmanname);
add(saleslevellabel);
add(saleslevel);
add(prodsoldlabel);
add(product);
add(amtsoldlabel);
add(amtprodsold);
add(none5);
add(none6);
add(none7);
add(none8);
add(empty1);
add(updatesalesmandata);
add(done);
add(empty2);
done.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(1);
}
});
}
}
class WriteTextFilePanel extends JPanel
{
public WriteTextFilePanel()
{
JLabel none1 = new JLabel("");
JButton writetextfile = new JButton("Read Object File");
JLabel none2 = new JLabel("");
JTextArea output = new JTextArea(300,300);
output.setVisible(true);
output.setRows(20);
output.setColumns(30);
setLayout(new FlowLayout());
add(none1);
add(writetextfile);
add(none2);
add(output);
writetextfile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
writeTextFile();
}
});
}
}
public void writeTextFile()
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = fileChooser.showOpenDialog(this);
if (result==JFileChooser.CANCEL_OPTION)
System.exit(1);
File fileName = fileChooser.getSelectedFile();
if ((fileName==null) || (fileName.getName().equals("")))
{
JOptionPane.showMessageDialog(this,"Invalid File Name");
System.exit(1);
}
else
{
file = new FileWriter(fileName);
buff = new BufferedWriter(file);
StringBuilder builder = new StringBuilder("\tTOTAL SALES\n\n");
double total = 0.00;
Collections.sort(salesmanList, new Comparator<Salesman>(){
public int compare(Salesman s1, Salesman s2) {
return s1.getName().compareTo(s2.getName());}});
for (Salesman salesm : salesmanList)
{
builder.append(salesm.toString() +"\n");
total += salesm.getSales();
}
builder.append("\nTotal\t\t " + currencyFormat.format(total));
try
{
buff.write(builder.toString());
output.setText(builder.toString());
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
public void writeObjectFile()
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = fileChooser.showOpenDialog(this);
if (result==JFileChooser.CANCEL_OPTION)
System.exit(1);
File fileName = fileChooser.getSelectedFile();
if ((fileName==null) || (fileName.getName().equals("")))
{
JOptionPane.showMessageDialog(this,"Invalid File Name");
System.exit(1);
}
else
{
try
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream
(fileName));
try
{
for (Salesman s : salesmanList)
{
oos.writeObject(s);
}
}
finally
{
oos.close();
}
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
JOptionPane.showMessageDialog(this, " You file has been written as objects!!
", "Text File Read", JOptionPane.INFORMATION_MESSAGE);
}
}
[/code]
--
Message posted via JavaKB.com
http://www.javakb.com/Uwe/Forums.aspx/java-gui/200604/1
- 2
- Problem wih the progressbar in statusbar with frames in IEHi, i've an anoying problem.
SITUATION
I created a webpage with CSP (crystal Enterprise ASP pages) and
Javascript. The page consists of frames. When someone pushes a button
in one frame (grouping of cubes and reports) i load another frame with
report and cube links. When someone pushes a report or a Cube link an
ActiveX or a DHTML viewer is started.
THE PROBLEM
The problem is that when someone pushes a button in the GroupFrame the
reports and cube links are loaded correctly, but the progressbar below
in the statusbar keeps running. It's showing that not everything is
loaded yet, but everything is loaded!!!
The next time when i push a button in the group frame all the links
are corerectly loaded but now there's is no progressbar (so correct)
and then the next time when i push the link in the groupframe again
Again a progressbar is continously shown (what the heck??!!)
It has something to do with frames because when i load the information
in a pop up screen it doesn't show a progressing progress bar.
I hope that someone can help me with this problem..
Thx
Hennie
- 2
- JGSS Kerberos issuesI'm trying to implement single sign-on using jCIFS. I'm having
difficulties with Kerberos on some clients. For some reason, the web
browser on my machine defaults to NTLM authentication, and that's
working fine. The problem I'm having is when a client tries to use
Kerberos to authenticate. I've tried setting jCIFS flags to turn off
Kerberos, to no avail. I've read the documentation and configured
Kerberos accordingly. I just can't get past this error. Relevant info
below:
Environment:
JBoss 4.0.1sp1/WinXP/JDK 1.4.2_07
Kerberos properties:
javax.security.auth.useSubjectCredsOnly=false
jcifs.http.enableNegotiate=false
java.security.krb5.realm=VTIC.COM
java.security.krb5.kdc=agil02.vtic.com
sun.security.krb5.debug=true
jcifs.spnego.servicePrincipal=HTTP/email***@***.com
jcifs.spnego.servicePassword=xxxxxxxxx
javax.security.auth.useSubjectCredsOnly=false
Error message:
2006-03-03 10:41:45,043 INFO [STDOUT] Negotiate
YIIE6AYGKwYBBQUCoIIE3DCCBNigJDAiBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICCqKCBK4EggSqYIIEpgYJKoZIhvcSAQICAQBuggSVMIIEkaADAgEFoQMCAQ6iBwMFACAAAACjggPBYYIDvTCCA7mgAwIBBaEKGwhWVElDLkNPTaImMCSgAwIBAqEdMBsbBEhUVFAbE3dzLWx1bXBraW4udnRpYy5jb22jggN8MIIDeKADAgEXoQMCARGiggNqBIIDZrffE8Fnkd+d+z4KN/T3rGs/8tZ84bxy3aR16SMrfZicPfsA0pyMsFjwpl9KTDZt8LnT6ujlph5xyEC9or5SswLB/XNSe23uuEBX7F80qZZhvcVOkMlaxI8L5xK+773TNMqCYRL0UGWI2ac8PhbrN6Q5RSatAh4sf4aF54ZcvkRH70Dt6r3oH2blBQ4l6oGk4TMZeXw6HIabNFi1/11kcbFfifeWS0+M4hPC9OD+9h8GA/Q1CL0LAWPr+MWT4lZeZ95XQWjNUQh0ZbKtiaaB8j5nQtwhNhRAeu+jay35NH0DnpZLwklCf8sqP+3AfTLBcGFcO7hWfxBMoae4vYfZ1MIkNlInmM+nUBEhhRJ1Vy0KR6/A6TxUo7tuifXpyhmOZPYYkx7xUmqR7F3zmezq60BLS5vjYcVkxlJa5la8jh6PZ/NWrOKR/stUhNyjLCO+TSuy8ZJUjJfaK7V6ONpqSvagHU9Qws/az5CvH/csC01MzhaQuuPfmug5Ebl2VxC2OnOtMi7+9MnDu6zWyUHhvNYGNcsG0KxK6WzP6PGvaQFwlK1qoed2w/8ucZSrjiA4jVZw2ferpc5uZAMyi0aczJwk/xTjPS+yLb4VOH65+TrUdRlCOp9RMNz/A5kzI0KorrEuiN6dptP/Rs5lVjMwBSWQp5/+QB22lHPeP6l0Gex15i+bbQ1ljYdYL76ApzvvimRLjd1I4DNmNNMkuWsXNXHaTCXSDbO+quktPpZS5uw1kIEFNSSQ5nDmAcxbBL0T8SbHirs4kC4ZPhRsYnbeSIQFHpkrEAL699wVvNxairKh/3i6GuVx2Ct2u8xHUkoJs/csawLJigJu1c0FXIxTUEP6ak7aCpTtC9FFbERKJi66Pr710s7aiq0UeCGCP6jKyb/6KsjgL98DrdJiwwHFqiYZDqud7IwAn1HI+3VHI155kw6B2ciRtkRfsHfiv3V7oQoY8fM3Uy90ksV4TJ8tPNvwIsoZo62u4VBcc7d+fYHa1hSM2n2OYUnqVzN5fIG2fodInSMCzRVdrfx8e8HCGkXGqLUkSojNwqa/Paswa5V4+QuXtkGda+htIJyfHbNM6F4AxXXk0f0Ti0RpKL/0fWfJswL7kkwgQ8J8lVeDNXoJZSOdIcN4u10i3E95JoENjPh0m7r9paSBtjCBs6ADAgEXooGrBIGoYcaOOfV1qU0ouvj9Vv6x07iOih9H+UMZknk/u4YSzMySrVrQfaXNh0bZEO/vJ6EF9WEOSWfkjbjxTtOkMdJlyKA6VZHqwIfT3b9E0eL/I19uG8nYl4qM1OaQ2m3JoBscIEP8dTDu23910B9svUw6V8NsjGmOSVB3FMkj3iBQU0Pmvh9igKfbQEt6bs3NReSBlEZwvk/9Z1TH+3sa6AQNNcCVuhreuXXK
2006-03-03 10:41:58,715 INFO [STDOUT]
jcifs.spnego.AuthenticationException: Error performing Kerberos
authentication: java.lang.reflect.InvocationTargetException
2006-03-03 10:41:58,715 INFO [STDOUT] at
jcifs.spnego.Authentication.processKerberos(Authentication.java:447)
2006-03-03 10:41:58,715 INFO [STDOUT] at
jcifs.spnego.Authentication.processSpnego(Authentication.java:346)
2006-03-03 10:41:58,715 INFO [STDOUT] at
jcifs.spnego.Authentication.process(Authentication.java:235)
2006-03-03 10:41:58,715 INFO [STDOUT] at
jcifs.http.Negotiate.authenticate(Negotiate.java:47)
2006-03-03 10:41:58,715 INFO [STDOUT] at
com.agilquest.onboard.auth.IntegratedSsoHelper.authenticateNtlm(IntegratedSsoHelper.java:154)
2006-03-03 10:41:58,715 INFO [STDOUT] at
com.agilquest.onboard.sso.IntegratedSsoFilter.doFilter(IntegratedSsoFilter.java:93)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
2006-03-03 10:41:58,715 INFO [STDOUT] at
org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:54)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
2006-03-03 10:41:58,731 INFO [STDOUT] at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
2006-03-03 10:41:58,731 INFO [STDOUT] at
java.lang.Thread.run(Thread.java:534)
2006-03-03 10:41:58,731 INFO [STDOUT] Caused by:
java.lang.reflect.InvocationTargetException
2006-03-03 10:41:58,731 INFO [STDOUT] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2006-03-03 10:41:58,731 INFO [STDOUT] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
2006-03-03 10:41:58,731 INFO [STDOUT] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2006-03-03 10:41:58,731 INFO [STDOUT] at
java.lang.reflect.Method.invoke(Method.java:324)
2006-03-03 10:41:58,731 INFO [STDOUT] at
jcifs.spnego.Authentication$ServerAction.run(Authentication.java:511)
2006-03-03 10:41:58,731 INFO [STDOUT] at
jcifs.spnego.Authentication.processKerberos(Authentication.java:430)
2006-03-03 10:41:58,731 INFO [STDOUT] ... 37 more
2006-03-03 10:41:58,746 INFO [STDOUT] Caused by: GSSException: No
valid credentials provided (Mechanism level: Failed to find any
Kerberos Key)
2006-03-03 10:41:58,746 INFO [STDOUT] at
sun.security.jgss.krb5.Krb5AcceptCredential.getInstance(Krb5AcceptCredential.java:82)
2006-03-03 10:41:58,746 INFO [STDOUT] at
sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:75)
2006-03-03 10:41:58,746 INFO [STDOUT] at
sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:149)
2006-03-03 10:41:58,746 INFO [STDOUT] at
sun.security.jgss.GSSCredentialImpl.add(GSSCredentialImpl.java:334)
2006-03-03 10:41:58,746 INFO [STDOUT] at
sun.security.jgss.GSSCredentialImpl.<init>(GSSCredentialImpl.java:44)
2006-03-03 10:41:58,746 INFO [STDOUT] at
sun.security.jgss.GSSManagerImpl.createCredential(GSSManagerImpl.java:102)
2006-03-03 10:41:58,746 INFO [STDOUT] ... 43 more
Any help is appreciated,
Chris
- 6
- Eclipse and assertI am using Eclipse. I want to enable assert in my code. I alrready have
the compiler set to use Jave 5.0. How do I configure the build and run
to use the correct switch to enable assert evaluations?
- 6
- ant-regexpI would like to use the following regexp:
<replaceregexp flags="g" match="\n\[\s&&[^\n]]+" replace="\\\\n">
<fileset dir="/home/public/dbs/regexp"
includes="applicationLogMessages.properties"/>
</replaceregexp>
unfortunately, eclipse marks this as an error as soon as i type a "&".
my goal is to replace all NEWLINEs where the new line starts with a
WHITESPACE with a \n, but keep it on the same line.
if the next line is empty(simply a NEWLINE) i want to do nothing!
how can i achieve this (without using &)?
thankful for all hints.
david
- 6
- About Reflection (or not)Hello everyone..
Here I am again for another question.. :P
Suppose we have the following class
public class Test {
private Test2 test2 = new Test2();
public void testMethod() {
test2.test2Method();
}
}
Is there a way, using anything (probably reflection) to know that the
method testMethod of this class calls test2Method() method of Test2
class..? Or the other way around.. Is there a way to know what classes
call Test2's method test2Method()..?
Any help/reference/book etc. is appreciated.
Thank you very much.
- 6
- selective page accessI just need a, "it can be done" answer. I want to build a web
application, which will allow users to access pages, based on four
different user attributes, namely, "department", "trading partner
type", "designation", and "customer". I want to allow declarative
access, meaning I want even lay administrators to edit a configuration
text file so that a new or old user's profile can be changed. Can this
be done just with Tomcat and Struts, or do I need to used EJBs?
Thanks,
Yasaswi
- 6
- Drag and drop an URLHello,
can you give an advice please? I learned how to drag and drop an URL from my
web browser to my Java application. But it does not work as I would like.
For example if I drop URL http://java.sun.com/ my application receives
http://java.sun.com/Java Technology where "Java Technology" is not the part
of URL but page title. Is there any way how to receive pure URL without the
page title? I worry that by cutting off everything after the last slash I
can damage some URLs. I use DataFlavor.stringFlavor.
Thank you! Vojta
- 8
- 16
- Broken behavior of java.io.File()I'm seeing several examples of broken behavior with java.io.File():
* mkdirs() sometimes returns false, despite succeeding (the directories
exist afterward on the
filesystem)
* exists() and isDirectory() sometimes return false when called on a
File object right after a
mkdirs() after which the directory and its parents existed, as
observed using Winblows
Exploder.
What is going on here? Is there even a way to test for the existence of
a directory with 100% accuracy?
- 16
- MySQL Select help neededHi All,
Trying to work out the correct sql statement
If I have a table that contains the column partpostcode and has these
entries,
PE10
PE15
PE1
What I want to do is select those rows where the partpostcode exists in
a given parameter,...
i.e something liek.
Select * where partpostcode IS CONTAINED IN "PE10 1AF"
sadly there are no IS CONTAINED IN keywords, but i'm not sure how to do
it using LIKE or IN...
Any comments ?
Thanks,
|
| Author |
Message |
Johan

|
Posted: 2007-10-16 6:34:00 |
Top |
java-programmer, static initialization of arrays
Hi guys,
I started to write some Java today, see the code below. What I want to
do is produce a static array V from several static arrays A, B, ...,
but I don't want V to have any duplicate elements. I was wondering if
there is a better way of coding this up? Also, is there a way to
guarantee that arrays A, B, ... are constructed before S and V without
relying on the order in which they are declared?
Thanks,
Johan
-----------------------------------------
import java.util.*;
class StringSet extends TreeSet<String>
{
public void addAll( String[] strings )
{
for (String s: strings )
{
add( s );
}
}
};
class Main
{
private static final String[] A = { "A1", "A2", "B1" };
private static final String[] B = { "B1", "B2" };
...
private static final StringSet S =
new StringSet ()
{
{
addAll( A );
addAll( B );
...
}
};
private static final String[] V = S.toArray(new String[S.size()]);
...
}
|
| |
|
| |
 |
ram

|
Posted: 2007-10-16 7:47:00 |
Top |
java-programmer >> static initialization of arrays
Johan <email***@***.com> writes:
>produce a static array V from several static arrays A, B, ...,
>but I don't want V to have any duplicate elements.
public class Main
{
public static void main( final java.lang.String[] args )
{
final java.lang.String[] a = { "A1", "A2", "B1" };
final java.lang.String[] b = { "B1", "B2" };
final java.util.Set<java.lang.String> set =
new java.util.HashSet<java.lang.String>();
set.addAll( java.util.Arrays.asList( a ));
set.addAll( java.util.Arrays.asList( b ));
final java.lang.String[] c = set.toArray( a );
java.lang.System.out.println
( java.util.Arrays.toString( c )); }}
[A2, A1, B2, B1]
|
| |
|
| |
 |
ram

|
Posted: 2007-10-16 9:46:00 |
Top |
java-programmer >> static initialization of arrays
email***@***.com (Stefan Ram) writes:
>final java.util.Set<java.lang.String> set =
>new java.util.HashSet<java.lang.String>();
When answering, I actually had not yet read
the question to the end, so that my answer
might not address all questions of the OP.
I only answered to how to merge arrays
removing duplicates - not being aware that
the OP already used java.util.Set.
|
| |
|
| |
 |
Patricia Shanahan

|
Posted: 2007-10-16 9:53:00 |
Top |
java-programmer >> static initialization of arrays
Johan wrote:
> Hi guys,
guys?
>
> I started to write some Java today, see the code below. What I want to
> do is produce a static array V from several static arrays A, B, ...,
> but I don't want V to have any duplicate elements. I was wondering if
> there is a better way of coding this up? Also, is there a way to
> guarantee that arrays A, B, ... are constructed before S and V without
> relying on the order in which they are declared?
Have you considered using a static initializer block?
They are handy when a static variable needs initializing and the
initialization is too complicated to go in the variable declaration.
If you put it after the declarations of A, B, ... there will be no
forward reference problems.
Patricia
|
| |
|
| |
 |
Daniel Pitts

|
Posted: 2007-10-16 12:14:00 |
Top |
java-programmer >> static initialization of arrays
On Oct 15, 3:33 pm, Johan <email***@***.com> wrote:
> Hi guys,
>
> I started to write some Java today, see the code below. What I want to
> do is produce a static array V from several static arrays A, B, ...,
> but I don't want V to have any duplicate elements. I was wondering if
> there is a better way of coding this up?
[snip]
>
> import java.util.*;
>
> class StringSet extends TreeSet<String>
> {
> public void addAll( String[] strings )
> {
> for (String s: strings )
> {
> add( s );
> }
> }
>
> };
No need for a special StringSet class...
>
> class Main
> {
> private static final String[] A = { "A1", "A2", "B1" };
> private static final String[] B = { "B1", "B2" };
> ...
>
> private static final StringSet S =
> new StringSet ()
> {
> {
> addAll( A );
> addAll( B );
> ...
> }
> };
>
> private static final String[] V = S.toArray(new String[S.size()]);
>
> ...
>
> }
You really should use List instead of String[], but I'll show you both
ways:
import java.util.*;
public class Main {
public static final String[] A = { "A1", "A2", "B1" };
public static final String[] B = { "B1", "B2" };
public static final String[] V;
static {
Set<String> stringSet = new
LinkedHashSet<String>(Arrays.asList(A));
stringSet.addAll(Arrays.asList(B));
V = stringSet.toArray(new String[stringSet.size()]);
}
}
The problem with that approach, is that A and B and V are still
mutable!
V[0] = "B1" will have an effect you don't want.
import java.util.*;
public class MainWithCollection {
public static final List<String> A =
Collections.unmodifiableList(Arrays.asList("A1", "A2", "B1"));
public static final List<String> B =
Collections.unmodifiableList(Arrays.asList("A1", "B1", "B2"));
public static final List<String> V;
static {
Set<String> stringSet = new LinkedHashSet<String>(A);
stringSet.addAll(B);
ArrayList<String> stringList = new ArrayList<String>(stringSet);
stringList.trimToSize();
V = Collections.unmodifiableList(stringList);
}
}
> Also, is there a way to
> guarantee that arrays A, B, ... are constructed before S and V without
> relying on the order in which they are declared?
If they are in the same class, then you have to declare them in the
order you expect them to be initialized. The compiler won't let you
refer to them before they are. You can use a static initializer (such
as I did) to explicitly initialize them in a particular order.
Now, if you have many arrays/lists to add together (more than just A
and B), you might consider two things: One, loading this data from an
external source (data file, for instance), and at the very least, use
a for-loop to iterate over them:
public class Main {
public static final Object[] a1 = {1, 2, 3};
public static final Object[] a2 = {1, 2, 3};
public static final Object[] a3 = {1, 2, 3};
public static final Object[] a4 = {1, 2, 3};
static {
for (Object[] arr : new Object[][] {a1, a2, a3, a4}) {
}
}
}
Or similarly with the List version.
The more I think about this, the more I think you should separate out
these strings into an external file, and not have them be public nor
static. What is it that you're trying to achieve?
|
| |
|
| |
 |
Johan

|
Posted: 2007-10-16 15:24:00 |
Top |
java-programmer >> static initialization of arrays
Thanks for all the replies, people. What I'm trying to achieve is
illustrated by the following 'code':
class Base
{
static final String[] A = {1, 2, 3};
static final String[] B = {3, 4, 5};
static final String[] C = {...};
...
};
class Derived1
{
static final String[] V = A union B;
}
class Derived2
{
static final String[] V = A union B union C;
}
So I'm really trying to write a collection of static final arrays (or
lists) in my baseclass and then combine them in various ways in
different derived classes. Because A, B etc are in a different class,
I am worried about the initialisation problem. I know that base
objects are constructed before derived objects, bur I'm not so sure if
this is true for static objects.
The reason that I used arrays rather than lists is that I thought they
would more efficient (otherwise you would have to constuct a linked
list from an array and then use that to populate the set). I know this
is not an issue, as it happens during static initialization, but it's
a force of habit :-)
Thanks,
Johan
On Oct 16, 5:13 am, Daniel Pitts <email***@***.com> wrote:
> On Oct 15, 3:33 pm, Johan <email***@***.com> wrote:
>
>
>
> > Hi guys,
>
> > I started to write some Java today, see the code below. What I want to
> > do is produce a static array V from several static arrays A, B, ...,
> > but I don't want V to have any duplicate elements. I was wondering if
> > there is a better way of coding this up?
> [snip]
>
> > import java.util.*;
>
> > class StringSet extends TreeSet<String>
> > {
> > public void addAll( String[] strings )
> > {
> > for (String s: strings )
> > {
> > add( s );
> > }
> > }
>
> > };
>
> No need for a special StringSet class...
>
>
>
>
>
>
>
> > class Main
> > {
> > private static final String[] A = { "A1", "A2", "B1" };
> > private static final String[] B = { "B1", "B2" };
> > ...
>
> > private static final StringSet S =
> > new StringSet ()
> > {
> > {
> > addAll( A );
> > addAll( B );
> > ...
> > }
> > };
>
> > private static final String[] V = S.toArray(new String[S.size()]);
>
> > ...
>
> > }
>
> You really should use List instead of String[], but I'll show you both
> ways:
>
> import java.util.*;
>
> public class Main {
> public static final String[] A = { "A1", "A2", "B1" };
> public static final String[] B = { "B1", "B2" };
> public static final String[] V;
> static {
> Set<String> stringSet = new
> LinkedHashSet<String>(Arrays.asList(A));
> stringSet.addAll(Arrays.asList(B));
> V = stringSet.toArray(new String[stringSet.size()]);
> }
>
> }
>
> The problem with that approach, is that A and B and V are still
> mutable!
> V[0] = "B1" will have an effect you don't want.
>
> import java.util.*;
>
> public class MainWithCollection {
> public static final List<String> A =
> Collections.unmodifiableList(Arrays.asList("A1", "A2", "B1"));
> public static final List<String> B =
> Collections.unmodifiableList(Arrays.asList("A1", "B1", "B2"));
> public static final List<String> V;
> static {
> Set<String> stringSet = new LinkedHashSet<String>(A);
> stringSet.addAll(B);
> ArrayList<String> stringList = new ArrayList<String>(stringSet);
> stringList.trimToSize();
> V = Collections.unmodifiableList(stringList);
> }
>
> }
> > Also, is there a way to
> > guarantee that arrays A, B, ... are constructed before S and V without
> > relying on the order in which they are declared?
>
> If they are in the same class, then you have to declare them in the
> order you expect them to be initialized. The compiler won't let you
> refer to them before they are. You can use a static initializer (such
> as I did) to explicitly initialize them in a particular order.
>
> Now, if you have many arrays/lists to add together (more than just A
> and B), you might consider two things: One, loading this data from an
> external source (data file, for instance), and at the very least, use
> a for-loop to iterate over them:
>
> public class Main {
> public static final Object[] a1 = {1, 2, 3};
> public static final Object[] a2 = {1, 2, 3};
> public static final Object[] a3 = {1, 2, 3};
> public static final Object[] a4 = {1, 2, 3};
>
> static {
> for (Object[] arr : new Object[][] {a1, a2, a3, a4}) {
> }
> }
>
> }
>
> Or similarly with the List version.
>
> The more I think about this, the more I think you should separate out
> these strings into an external file, and not have them be public nor
> static. What is it that you're trying to achieve?- Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
|
| |
|
| |
 |
Lew

|
Posted: 2007-10-16 20:40:00 |
Top |
java-programmer >> static initialization of arrays
Johan wrote:
> Thanks for all the replies, people.
Please, please, please, please, please do not top-post.
> The reason that I used arrays rather than lists is that I thought they
> would more efficient (otherwise you would have to constuct a linked
> list from an array and then use that to populate the set). I know this
> is not an issue, as it happens during static initialization, but it's
> a force of habit :-)
Be aware that not all Lists are LinkedLists. And what does "efficient" mean
to you - a week of figuring out how to code something to save a millisecond
that will be optimized away by the HotSpotter anyway?
Since you're looking into using Collections to implement your features anyway,
i.e., using a Set to prevent duplicate entries, you might consider going
Collection all the way and not using explicit arrays.
This also lets you use generics for type safety.
--
Lew
|
| |
|
| |
 |
Daniel Pitts

|
Posted: 2007-10-17 8:18:00 |
Top |
java-programmer >> static initialization of arrays
On Oct 16, 12:23 am, Johan <email***@***.com> wrote:
> Thanks for all the replies, people. What I'm trying to achieve is
> illustrated by the following 'code':
>
[snip]
> So I'm really trying to write a collection of static final arrays (or
> lists) in my baseclass and then combine them in various ways in
> different derived classes. Because A, B etc are in a different class,
> I am worried about the initialisation problem. I know that base
> objects are constructed before derived objects, bur I'm not so sure if
> this is true for static objects.
>
> The reason that I used arrays rather than lists is that I thought they
> would more efficient (otherwise you would have to constuct a linked
> list from an array and then use that to populate the set). I know this
> is not an issue, as it happens during static initialization, but it's
> a force of habit :-)
>
> Thanks,
*Why* are you doing this? How will it improve your end-users
experience?
|
| |
|
| |
 |
Roedy Green

|
Posted: 2007-10-17 9:19:00 |
Top |
java-programmer >> static initialization of arrays
On Mon, 15 Oct 2007 15:33:56 -0700, Johan <email***@***.com>
wrote, quoted or indirectly quoted someone who said :
> Also, is there a way to
>guarantee that arrays A, B, ... are constructed before S and V without
>relying on the order in which they are declared?
use static init code. Inside the static init, the inits must be done
in order.
see http://mindprod.com/jgloss/array.html
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
|
| |
|
| |
 |
Johan

|
Posted: 2007-10-18 4:25:00 |
Top |
java-programmer >> static initialization of arrays
On 17 Oct, 01:18, Daniel Pitts <email***@***.com> wrote:
> On Oct 16, 12:23 am, Johan <email***@***.com> wrote:> Thanks for all the replies, people. What I'm trying to achieve is
> > illustrated by the following 'code':
>
> [snip]
>
> > So I'm really trying to write a collection of static final arrays (or
> > lists) in my baseclass and then combine them in various ways in
> > different derived classes. Because A, B etc are in a different class,
> > I am worried about the initialisation problem. I know that base
> > objects are constructed before derived objects, bur I'm not so sure if
> > this is true for static objects.
>
> > The reason that I used arrays rather than lists is that I thought they
> > would more efficient (otherwise you would have to constuct a linked
> > list from an array and then use that to populate the set). I know this
> > is not an issue, as it happens during static initialization, but it's
> > a force of habit :-)
>
> > Thanks,
>
> *Why* are you doing this? How will it improve your end-users
> experience?
My sub-classes send queries to a database. Some of these queries are
specific to a sub-type, other queries are common to several sub-types.
I grouped the queries into sets by function and by storing the these
sets in the base class, sub types can use and combine them as
necessary. This makes it easier to add new subtypes in the future. I
hope this is clear so far.
With regards to using arrays as opposed to containers for this
purpose, I agree that it is better to use containers as performance is
not an issue. I only just started writing Java - I am used to
developing C++ applications where performance *is* an issue and where
converting between STL containers is often not appropriate.
Thanks,
Johan
|
| |
|
| |
 |
Daniel Pitts

|
Posted: 2007-10-19 23:45:00 |
Top |
java-programmer >> static initialization of arrays
On Oct 17, 1:25 pm, Johan <email***@***.com> wrote:
> On 17 Oct, 01:18, Daniel Pitts <email***@***.com> wrote:
>
>
>
> > On Oct 16, 12:23 am, Johan <email***@***.com> wrote:> Thanks for all the replies, people. What I'm trying to achieve is
> > > illustrated by the following 'code':
>
> > [snip]
>
> > > So I'm really trying to write a collection of static final arrays (or
> > > lists) in my baseclass and then combine them in various ways in
> > > different derived classes. Because A, B etc are in a different class,
> > > I am worried about the initialisation problem. I know that base
> > > objects are constructed before derived objects, bur I'm not so sure if
> > > this is true for static objects.
>
> > > The reason that I used arrays rather than lists is that I thought they
> > > would more efficient (otherwise you would have to constuct a linked
> > > list from an array and then use that to populate the set). I know this
> > > is not an issue, as it happens during static initialization, but it's
> > > a force of habit :-)
>
> > > Thanks,
>
> > *Why* are you doing this? How will it improve your end-users
> > experience?
>
> My sub-classes send queries to a database. Some of these queries are
> specific to a sub-type, other queries are common to several sub-types.
> I grouped the queries into sets by function and by storing the these
> sets in the base class, sub types can use and combine them as
> necessary. This makes it easier to add new subtypes in the future. I
> hope this is clear so far.
>
> With regards to using arrays as opposed to containers for this
> purpose, I agree that it is better to use containers as performance is
> not an issue. I only just started writing Java - I am used to
> developing C++ applications where performance *is* an issue and where
> converting between STL containers is often not appropriate.
>
> Thanks,
>
> Johan
I'm still thinking that it might be useful for you to externalize all
of this data. At least consider it.
|
| |
|
| |
 |
| |
 |
Index ‹ java-programmer |
- Next
- 1
- monthly earning $1000 to $5000monthly earning $1000 to $5000
simple online surveys
create your membership visit
******************************
www.awsurveys.comhomemain.cfm
*********************************
refid= siva icici
*********************************
- 2
- 64-bit Sparc laptopIf you are a Solaris on SPARC user, you might want to know that
Tadpole is running a drawing on its websit, www.tadpolecomputer.com,
for one of its new 64-bit SPARC laptops.
John Davis
- 3
- 4
- hi reg jsp page redirecthi all i have jsp page -where the user fills up some fields.basically i
dont want user to fill up those forms during nightime . so
i take system time which is cst and calculate whether its am or pm and
if its between 7pm and 6am i redirect saying u cannot fill it up.
the executables are placed in server which is located in cst time zone.
what happens is when any person from asian counties click the link its
not redirecting its still shows the form .
when i test it locally its fine .any help cant i take the system time
and redirect based on that
thanks for the help
- 5
- How to download a text file from server to client?hi,
I am devoloping a web application using JSP and Servlets.
The first thing I need to know is how to create a text file in the
sever.
Once the text file is created there should be an option for
downloading it to the client.It could a link.On click of that link the
user should be able to save it to the client.
any help will be great!
thanks in advance.
---------------------------chik
- 6
- How Robots Will Steal Your JobProgrammer Dude wrote:
> Richard Heathfield wrote:
<snip>
>
>>If so, they could easily be under observation in their turn. Or
>>not. We don't know either way.
>
> We do know they aren't making physical recordings of any kind.
> Most (if not all) human scientists do of necessity. They also
> don't appear to be concerned about sharing their findings.
How exactly do we /know/ they're not making any physical recordings?
Because we haven't seen any? That'd be like my brother saying that he
/knows/ I don't own any white shirts (which I do) because he's never
seen me wear one (which I don't).
Absense of evidence... ah, you must be sick of hearing that by now. You
don't appear to be taking any notice of it anyway.
Regardless of that though, why is it required that they make physical
recordings? How many "witch doctors" and "medice (wo)men" (your words
elsethread) record their observations?
--
Corey Murtagh
The Electric Monk
"Quidquid latine dictum sit, altum viditur!"
- 7
- package com.ibm.security.x509 does not existHow to fix this compile error with jdk 1.5.0_14 on windows 2000:
AsnName.java:144: package com.ibm.security.x509 does not exist
encoding = (new
com.ibm.security.x509.X500Name(mName)).getEncoded();
...
- 8
- duplicating Properties Dialog boxHi there,
Wondering if anyone there has duplicated a properties dialog box before. I
need to do exactly that for a project I'm working on. You know what I mean,
eh? The kind you can find in JBuilder. The one there is obviously using a
Tab control...one tab for properties and the other for events. The one I
intend to make doesn't need a Tab control. I'm only displaying properties,
no events.
So, I'm going to need a JScrollPane, but what would you recommend I use to
get the two columned list that one typically sees in a properties dialog
box? The two columned list generally shows the property name in the left
column and either provides a textfield in the second column or a button that
opens a more detailed dialog box for that particular property.
Any suggestions?
Alan
- 9
- Reading HDD serialNoHi all,
Could you help me please to find out how to read the harddisk serial
number in java ?
Thanks a lot!!
- 10
- How to get path to current directory?Hello.
How to get path to current directory and put this path to object of class
String?
I found FileSystemView.getHomeDirectory() but it returns path to home
directory for example:
C:\Documments and Settings\Thomas
Thanks for help.
- 11
- ajax server design questionI am going to write a multi-player board game (I've actually already
written one version, with a java server and VB client). I'd like the
players to be able to play over the web, through an ajax client. I
don't know much about ajax yet. It appears that the XMLHttpRequest (or
whatever it is called) can only generate GET and POST requests through
the http protocol. In that case, I am going to have to either
a) write a server that understands http (maybe not too hard with java's
built-in classes)
or
b) use servlets w/tomcat or some other framework that will handle the
http for me and have the servlet keep a socket connection to the game
server, which speaks its own protocol.
Which should I go for? Also, I am concerned about losing some power by
going to http - like the server is not able to initiate contact with
the client (to notify it of moves made by the other player), and there
is no notification if the client shuts down their window (is that
true?). Is there any better way to accomplish these things than just
having the clients poll the server every 500ms or so?
Thanks for any advice.
- 12
- javax.net.ssl.HttpsURLConnectionHello,
I need the library javax.net.ssl.HttpsURLConnection.
But all the package i find where there is javax.net.ssl do not
contained the class HttpsURLConnection.
Does anyone have an idea where i can find it ?
Thank's a lot for your help
Sorry for my English?I'm French ;)
- 13
- 14
- OT(?) - Java Applet and Browser IssueI'm trying to troubleshoot the cause of the following errors:
basic: Registered modality listener
basic: Referencing classloader: sun.plugin.ClassLoaderInfo@a6aeed,
refcount=1
basic: Added progress listener: sun.plugin.util.GrayBoxPainter@af8358
basic: Loading applet ...
basic: Initializing applet ...
basic: Starting applet ...
network: Connecting http://www.java.com/jsp_utils/JavaCallJS.class with
proxy=DIRECT
network: Connecting http://www.java.com/jsp_utils/JavaCallJS/class.class
with proxy=DIRECT
load: class JavaCallJS.class not found.
java.lang.ClassNotFoundException: JavaCallJS.class
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed.
at sun.applet.AppletClassLoader.getBytes(Unknown Source)
at sun.applet.AppletClassLoader.access$100(Unknown Source)
at sun.applet.AppletClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 10 more
basic: Exception: java.lang.ClassNotFoundException: JavaCallJS.class
The error that has caught my eye is "open HTTP connection failed". I
have local Java apps (Eclipse IDE, Unlimited FTP) that run fine but
can't access the internet. But applets don't run - just generate errors
like above. Turns out that there are no Java related plugins in the
Firefox plugins directory. I've got Quicktime and Flash related files
there, but nothing Java related. If I try to install JRE 5, it tells me
that it's already installed. Yet applets (e.g. www.java.com) cause
General Exception Errors and I still have no Java related files in my
plugins directory.
Anybody have ideas as to the cause of this? Coudl somebody tell me
which files need to be in the plugins directory? Maybe I can just copy
them there myself.
Thx
-K2
- 15
- iPlanet and Tomcat configurationHi,
I am trying to configure iPlanet 4.1 or 6.0 to work with Tomcat 4.1.
I followed the instruction on Apache site
(http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk/neshowto.html)
but got no luck. Could not even get the examples (at the end of the
config.) to show up....:(
Has anybody gotten some successes on this front?
Any pointers will be appreciated.
Ming
|
|
|