Vector in table

Hi all,
I want to use Vector to declare the content of the table with two column. I tried to use data model, however, I cannot declare two dimensional Vector in the table, so I cannot show correct content in both column, would you mind the help us. Is it the only way to do is using 2d array? Please help, THANKS!! The code is shown as follow:
public class datamodel extends AbstractTableModel{
Vector data = new Vector();
data.add("column 1 row 1");
data.add("column 2 row 1");
data.add("column 1 row 2");
data.add("column 2 row 2");

I have one suggestion, u can use setData1(), setData2(), to store the 2 data in a object value class then save the whole object value into the vector.
When u want to call out the data, u just need call the function getData1(), getData2().
But before u call out the data, u have to specify the elementAt(int IndexNumber).
Hope u understand what I trying to explain here!

Similar Messages

  • How can I add rows to a JTable based on an Abstract Table Model?

    I have done this ...
    public class myui extends JPanel {
    private AbstractTableModel jTable1Model;
    blah blah
            jTable1Model = new AbstractTableModel() {
                 String[] column = new String[]{"TID", "Name", "Address"};
                 Vector<Vector<Object>> table = new Vector<Vector<Object>>();
                 @Override
                 public int getRowCount() {
                      return table.size();
                 @Override
                 public int getColumnCount() {
                      return column.length;
                 @Override
                 public String getColumnName(int col) {
                      return column[col];
                 @Override
                 public Object getValueAt(int row, int column) {
                      return table.get(row).get(column);
                 @Override
                 public void setValueAt(Object value, int row, int column) {
                      table.get(row).set(column, value);
                      fireTableCellUpdated(row, column);
                 public void insertRow() {
                      Vector<Object> columns = new Vector<Object>();
                      columns.add(null);columns.add(null);columns.add(null);
                      table.add(columns);
                      fireTableRowsInserted(0, table.size());
    blah blah
        public synchronized void ImportVisitorDataToJTable1(Object value, int row, int col) {
            jTable1Model.InsertRow();  <-----///// This line not being recognised as a valid member function call
           jTable1.setValueAt(value, row, col);
    }I thought to insert a row I can define a function in the abstracttablemodel class and then instantiate the class and override or create new methods that I can use.
    But after instantiating the class and overriding appropriately and adding the insertRow function, when I try to use it in ImportVisitorDataToJTable1 as seen above its not being recognized as a funtion of jTable1Model

    1. respect naming conventions. Example: myui --> MyUI, ImportVisitorDataToJTable1 -->importVisitorDataToJTable1
    2. convert Anonymous to Member: AbstractTableModel --> MyTableModel
    3. row parameter makes no sense here as it depends on current row count:
        public synchronized void importVisitorDataToJTable1(Object value, int col) {
            int row = jTable1Model.getRowCount();4. here is a more adequate "fireTable.."-call for insertRow:
    fireTableRowsInserted(table.size() - 1, table.size() - 1);
    5. check if you can take advantage using DefaultTableModel as suggested by Maxideon.

  • Delete records from a Table. Please help

    Hello Folks,
    I have a table that contains 7 records with a Button to delete each record.
    I am unable to delete any records from the table.
    Please can some one just have a look into my class and tell me how
    to delete a record from the table when the button is clicked.
    You can also run this class from the your command Prompt
    Just cut this and create a new java file.
    Please assist.
    Code Attached :
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.util.*;
    public class ButtonTableFactory {
    public static JTable createTable(Vector data, String buttonLabel, ActionListener action) {
    return createTable(data.iterator(), buttonLabel, action);
    public static JTable createTable(
    Iterator dataIterator,
    String buttonLabel,
    ActionListener action) {
    DefaultTableModel model = new DefaultTableModel() {
    public boolean isCellEditable(int row, int col) {
    return col == 1;
    model.setColumnCount(2);
    while (dataIterator.hasNext()) {
    Object[] row = { dataIterator.next().toString(), null };
    model.addRow(row);
    DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
    columnModel.addColumn(new TableColumn(0, 100));
    columnModel.addColumn(new TableColumn(1, 80,
    new TableButtonCellRenderer(buttonLabel),
    new TableButtonCellEditor(buttonLabel, action)
    JTable table = new JTable(model, columnModel) {
    public void valueChanged(ListSelectionEvent e) {
    super.valueChanged(e);
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    return table;
    private static class TableButtonCellRenderer implements TableCellRenderer {
    final JButton button;
    TableButtonCellRenderer(String buttonLabel) {
    button = new JButton(buttonLabel);
    public Component getTableCellRendererComponent(
    JTable table,
    Object value,
    boolean isSelected,
    boolean hasFocus, int row, int column) {
    return button;
    private static class TableButtonCellEditor
    extends AbstractCellEditor
    implements TableCellEditor, ActionListener {
    final JButton button;
    final ActionListener callback;
    TableButtonCellEditor(String buttonLabel, ActionListener callback) {
    button = new JButton(buttonLabel);
    this.callback = callback;
    button.addActionListener(this);
    public Component getTableCellEditorComponent(
    JTable table,
    Object value,
    boolean isSelected,
    int row, int column) {
    return button;
    public Object getCellEditorValue() {
    return null;
    public void actionPerformed(ActionEvent e) {
    button.getParent().requestFocus();
    callback.actionPerformed(e);
    static JTable table;
    public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Vector items = new Vector();
    for (int i = 0; i < 7; i++) {
    items.add(Integer.toString(i));
    ActionListener al = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    System.out.println("You clicked row: " + table.getSelectedRow());
    table = ButtonTableFactory.createTable(items, "More:", al);
    frame.getContentPane().add(new JScrollPane(table));
    frame.pack();
    frame.show();

    This will get you closer:
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.util.*;
    public class ButtonTableFactory {
        private JTable table;
        private Vector items = new Vector();
        private JScrollPane scroll;
        private JPanel main;
        private ActionListener al;
        public static JTable createTable(Vector data, String buttonLabel, ActionListener action) {
            return createTable(data.iterator(), buttonLabel, action);
        public static JTable createTable(
                Iterator dataIterator,
                String buttonLabel,
                ActionListener action) {
            DefaultTableModel model = new DefaultTableModel() {
                public boolean isCellEditable(int row, int col) {
                    return col == 1;
            model.setColumnCount(2);
            while (dataIterator.hasNext()) {
                Object[] row = { dataIterator.next().toString(), null };
                model.addRow(row);
            DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
            columnModel.addColumn(new TableColumn(0, 100));
            columnModel.addColumn(new TableColumn(1, 80,
                    new TableButtonCellRenderer(buttonLabel),
                    new TableButtonCellEditor(buttonLabel, action)
            JTable table = new JTable(model, columnModel) {
                public void valueChanged(ListSelectionEvent e) {
                    super.valueChanged(e);
            table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            return table;
        private static class TableButtonCellRenderer implements TableCellRenderer {
            final JButton button;
            TableButtonCellRenderer(String buttonLabel) {
                button = new JButton(buttonLabel);
            public Component getTableCellRendererComponent(
                    JTable table,
                    Object value,
                    boolean isSelected,
                    boolean hasFocus, int row, int column) {
                return button;
        private static class TableButtonCellEditor
                extends AbstractCellEditor
                implements TableCellEditor, ActionListener {
            final JButton button;
            final ActionListener callback;
            TableButtonCellEditor(String buttonLabel, ActionListener callback) {
                button = new JButton(buttonLabel);
                this.callback = callback;
                button.addActionListener(this);
            public Component getTableCellEditorComponent(
                    JTable table,
                    Object value,
                    boolean isSelected,
                    int row, int column) {
                return button;
            public Object getCellEditorValue() {
                return null;
            public void actionPerformed(ActionEvent e) {
                button.getParent().requestFocus();
                callback.actionPerformed(e);
        public void init() {
            main = new JPanel();
            main.setLayout(new BorderLayout());
            for (int i = 0; i < 7; i++) {
                items.add(Integer.toString(i));
            al = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("You clicked row: " + table.getSelectedRow());
                    items.remove(table.getSelectedRow());
                    buildTable(items);
            buildTable(items);
        public void buildTable(Vector items) {
            table = ButtonTableFactory.createTable(items, "More:", al);
            scroll = new JScrollPane(table);
            main.removeAll();
            main.add(scroll);
            main.revalidate();
            main.repaint();
        public JPanel getContent() {
            return main;
        public static void main(String[] args) {
            ButtonTableFactory factory = new ButtonTableFactory();
            factory.init();
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.getContentPane().add(factory.getContent());
            frame.setSize(300, 300);
            frame.setVisible(true);
    //        frame.pack();
    //        frame.show();
    }

  • Tables in List Cells?

    I have been experimenting with some java swing gui components lately and I want to do the following, but have had no success thus far.
    I have a list which I want to post some information in relative to an option the user can select. I can post some numbers in there but I want the following kind of layout in each cell...
    | |__________|
    |__________|__________|
    basically a table in each cell with two columns by two rows and the left most cells merged. Information is obviously going in each cell which I have no problem doing. I tried creating a Vector of tables for the list constructor with no luck.
    So any ideas on how this can be achieved would be appreciated. If I happen to be on the right track, I will post the code on what I have done, just basic steps for now please ;-)

    public class MyCellRenderer extends JPanel implements ListCellRenderer {
         public MyCellRenderer() {
             setOpaque(true);
         public Component getListCellRendererComponent(
             JList list,
             Object value,
             int index,
             boolean isSelected,
             boolean cellHasFocus)
             // create a set of components using a GridBagLayout or something like
             // you were making any other similar layout.
             setBackground(isSelected ? Color.red : Color.white);
             setForeground(isSelected ? Color.white : Color.black);
             return this;
    }

  • Custom table model, table sorter, and cell renderer to use hidden columns

    Hello,
    I'm having a hard time figuring out the best way to go about this. I currently have a JTable with an custom table model to make the cells immutable. Furthermore, I have a "hidden" column in the table model so that I can access the items selected from a database by their recid, and then another hidden column that keeps track of the appropriate color for a custom cell renderer.
    Subject -- Sender -- Date hidden rec id color
    Hello Pete Jan 15, 2003 2900 blue
    Basically, when a row is selected, it grabs the record id from the hidden column. This essentially allows me to have a data[][] object independent of the one that is used to display the JTable. Instinctively, this does not seem right, but I don't know how else to do it. I know that the DefaultTableModel uses a Vector even when it's constructed with an array and I've read elsewhere that it's not a good idea to do what I'm trying to do.
    The other complication is that I have a table sorter as well. So, when it sorts the objects in the table, I have it recreate the data array and then set the data array of the ImmutableTableModel when it has rearranged all of the items in the array.
    On top of this, I have a custom cell renderer as well. This checks yet another hidden field and displays the row accordingly. So, not only does the table sort need to inform the table model of a change in the data structure, but also the cell renderer.
    Is there a better way to keep the data in sync between all of these?

    To the OP, having hidden columns is just fine, I do that all the time.. Nothing says you have to display ALL the info you have..
    Now, the column appears to be sorting properly
    whenever a new row is added. However, when I attempt
    to remove the selected row, it now removes a seemingly
    random row and I am left with an unselectable blank
    line in my JTable.I have a class that uses an int[] to index the data.. The table model displays rows in order of the index, not the actual order of the data (in my case a Vector of Object[]'s).. Saves a lotta work when sorting..
    If you're using a similar indexing scheme: If you're deleting a row, you have to delete the data in the vector at the INDEX table.getSelectedRow(), not the actual data contained at
    vector.elementAt(table.getSelectedRow()). This would account for a seemingly 'random' row getting deleted, instead of the row you intend.
    Because the row is unselectable, it sounds like you have a null in your model where you should have a row of data.. When you do
    vector.removeElementAt(int), the Vector class packs itself. An array does not. If you have an array, when you delete the row you must make sure you dont have that gap.. Make a new array of
    (old array length-1), populate it, and give it back to your model.. Using Vectors makes this automatic.
    Also, you must make sure your model knows the data changed:
    model.fireTableDataChanged(); otherwise it has no idea anything happened..
    IDK if that's how you're doing it, but it sounds remarkably similar to what I went thru when I put all this together..

  • Hi change of selections in swings table rows..

    hi,
    i have created table using swings..jtable..
    it contains 3 colums and 16 rows..in first column a field called property..
    i have taken Table column in first column and inserted a combo box which contains 15 values..
    when user clicks on first columns rows it shows that combo box for selection..then user can select a value from that..now i want if user select value from combo box then in second column it should show the corresponding values for selection..
    like in first row.. second row..
    empno---null,not null,like
    empname---like,eqaul,
    empdate --less than,greaet than etcc..
    this is what i want..
    if he selects avalue from combo box of first columns it should show corresponding values in second column's row..
    it should show for all 16 rows..
    in second coumn also same as table column and combo box with that values(null,not null etc)
    my question will be bit confusing..
    give me solutions with sample code for above req..
    regards,
    sam

    the approach is similar to that used in "filtering" the table contents.
    sub the tablemodel and use two vectors to manage the reflected data...
    Vector a = inital data in unchanged state.
    Vector b = table data which can be set using the current row selection and the data in vector a. (data store)
    Thus the flow would be:
    i)process selection event.
    ii)apply selection rule against Vector a
    iii)set/change data in Vector b using data from Vector a
    firetableDataChanged()this triggers a refresh of displayed data.
    not strictly necessary to use Vectors but helpful if you need ti Iterate...
    :)

  • Open cursors are NOT closed only by closing the ResultSet or Statement

    I've realised that the open cursors are only closed by closing the connection.
    In my example code I have for-loop with a vector of table-names. For every table-name I start a query to retrieve metainformation (row-size, column-names). Although I close the ResultSet (which automatically closes the PreparedStatement/Statement) I reached after the 150th loop a max-cursor-exception (ora-01000) ?!
    It seems that there is only the workaround to close and re-open the connection at the end of the for-loop. Which is performance-side pretty bad :-(.
    Is there really no other solution?
    Besides: does anyone know WHY the statement.close() also closes the ResultSet?? I think this is a bad design (hence to tight dependency between both classes). What if the garbage collector closes the statement (and hence to the JDOC the statement.close()-method also closes the ResultSet)? For example if a method uses a local Statement and returns a ResultSet (and the Statement-garbage is collected), then the ResultSet would cause an exception?!
    Thanks for the help in advance
    Tai

    I've realised that the open cursors are only closed by
    closing the connection.Or by closing the Statement!
    In my example code I have for-loop with a vector of
    table-names. For every table-name I start a query to
    retrieve metainformation (row-size, column-names).
    Although I close the ResultSet (which automatically
    closes the PreparedStatement/Statement) I reached
    after the 150th loop a max-cursor-exception
    (ora-01000) ?!Closing the ResutSet does not automatically close the PreparedStatement/Statement.
    >
    It seems that there is only the workaround to close
    and re-open the connection at the end of the for-loop.
    Which is performance-side pretty bad :-(.
    Is there really no other solution?
    Just explicitly close the PreparedStatement/Statement!
    Besides: does anyone know WHY the statement.close()
    also closes the ResultSet?? You need to think of a resultset as a live connection to the database.
    Consider SELECT * FROM ABIGTABLE, it would be inefficient to populate the Resultset with all of the rows (could even eat up all memory) so the first n rows are returned ( n = Statement.getFetchSize() ) and the next n rows are returned as needed.
    I think this is a bad
    design (hence to tight dependency between both
    classes). What if the garbage collector closes the
    statement (and hence to the JDOC the
    statement.close()-method also closes the ResultSet)?
    For example if a method uses a local Statement and
    returns a ResultSet (and the Statement-garbage is
    collected), then the ResultSet would cause an
    exception?!You should use a statment and resultset, read all your data into a collection or a CachedRowSet (http://www.javaworld.com/javaworld/jw-02-2001/jw-0202-cachedrow.html) then close the statment as soon as possible. Never return a resultset form your data tier: that is tight coupling between the tiers of your application!

  • How to add name from text file to jtable?

    hello all,
    how to add name (string) from the notepad file(.txt) into jTable rows.
    I am not able to add it.
    try {
                 FileInputStream fis = new FileInputStream("Devices/Devices_Lst.txt");
                 BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                 String line = null;
                 Vector data = new Vector();
                 line = br.readLine();
                 while ( (line = br.readLine()) != null)
                    int rowCount1 = nmsTable.getRowCount();
                    for(int i=0;i<rowCount1;i++)      
                        myTableInit();  // it initialize the table
                       /* nmsTable.setValueAt(i+1,i,0);
                        Table.setValueAt(line,i,1);
                        Table.setValueAt(" ",i,2);
                        Table.setValueAt(" ",i,3);
                        Table.setValueAt(" ",i,4);
                        Table.setValueAt(" ",i,5); */
                        int rowNo = nmsTable.getRowCount();
                        row.addElement((rowNo+1));
                           //row.addElement(ipText.getText()+"-"+nameText.getText());
                           row.addElement(line);   
                           row.addElement((String)" ");
                           row.addElement((String) "");
                           row.addElement((String) "");
                           row.addElement((String) "");      
                            row.addElement((String) "");      
                            rows.add(row);                                     //rows is the Vector for table row.
                            Table.addNotify(); 
                  br.close();
                 if possible give me some examples.
    thank you.

    For every row you need to create a new Vector and add the data to that Vector. Then the Vector is added to the TableModel.
    If you add 6 items to the single Vector, then you will get 6 columns. So you need to create 6 Vectors and add a single item to each Vector and therefore you will end up with 6 rows with 1 column of data.

  • Creating Complex Math Formulas in IDCS4 (Mac)

    I have to create a 180 page Engineering handbook for a company, with LOTS of complex mathematic formulas. It also has a lot of engineering drawings, sketches, tables, etc. I'll use IDCS4 on a Mac platform, OSX 10.6.7. I also have Acrobat Pro, PS and Illustrator from the CS4 Suite. Their final deliverable will be a PDF, which the customer will make available for download, so I definitely want to convert text, images drawings, etc, to the smallest possible size.
    Unfortunately, my customer has no electronic documents to work with. My current plan is to scan the original printed book, clean up the scans in Photoshop, then use OCR in Acrobat to convert characters to text. I will probably export to RTF, DOC, TXT or some other format so I can import into IDCS4 and create an electronic version (suggestions welcome).
    Unfortunately, Acrobat OCR butchers the formulas and turns them into goobledegook. What plugins or programs are people using to create fairly complex mathematical formulas inside IDCS4? Can I do it inside IDCS4, or do I need to work in Word, Pages, or a dedicated mathematical formula program? I will need Greek symbols, integrals, differential equation capability, etc.
    My main concern at this time is the formulas, but I am open to any suggestions on converting scanned images to vectors, handling tables, and the best way to get my text content into IDCS4 with the least amount of time and effort.
    Thanks for your help.
    Lou Dina

    Try these resources:
    http://www.unics.uni-hannover.de/nhtcapri/mathematics.html
    http://www.cs.tut.fi/~jkorpela/math/
    Alec Fehl, MCSE, A+, ACE, ACI
    Adobe Community Expert
    AUTHOR:
    Microsoft Office 2007 PowerPoint: Comprehensive Course
    (Labyrinth
    Publications)
    Welcome to Web Design and HTML (Labyrinth Publications)
    CO-AUTHOR:
    Microsoft Office 2007: Essentials (Labyrinth Publications)
    Computer Concepts and Vista (Labyrinth Publications)
    Mike Meyers' A+ Guide to Managing and Troubleshooting PCs
    (McGraw-Hill)
    Internet Systems and Applications (EMC Paradigm)

  • Save data from a JTable to a file

    I have been working with the Camickr's example:
    package tabla;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class MikeToth extends JFrame
         private JTable table;
         private DefaultTableModel model;
         public MikeToth()
              String aLine ;
              Vector columnNames = new Vector();
              Vector data = new Vector();
              try
                   FileInputStream fin = new FileInputStream("MikeToth.txt");
                   BufferedReader br = new BufferedReader(new InputStreamReader(fin));
                   // extract column names
                   StringTokenizer st1 = new StringTokenizer(br.readLine(), "|");
                   while( st1.hasMoreTokens() )
                        columnNames.addElement(st1.nextToken());
                   // extract data
                   while ((aLine = br.readLine()) != null)
                        StringTokenizer st2 = new StringTokenizer(aLine, "|");
                        Vector row = new Vector();
                        while(st2.hasMoreTokens())
                             row.addElement(st2.nextToken());
                        data.addElement( row );
                   br.close();
              catch (Exception e)
                   e.printStackTrace();
              //  Create table using the DefaultTableModel
              model = new DefaultTableModel(data, columnNames);
              table = new JTable(model);
              JScrollPane scrollPane = new JScrollPane( table );
              getContentPane().add( scrollPane );
              JPanel buttonPanel = new JPanel();
              getContentPane().add( buttonPanel, BorderLayout.SOUTH );
              //  Empty Row button
              JButton button1 = new JButton( "Add Empty Row" );
              buttonPanel.add( button1 );
              button1.addActionListener( new ActionListener()
                   public void actionPerformed(ActionEvent e)
                        model.addRow( new Vector() );
              //  Save table to file button
              JButton button2 = new JButton( "Save Table to File" );
              buttonPanel.add( button2 );
              button2.addActionListener( new ActionListener()
                   public void actionPerformed(ActionEvent e)
                        //  Finish editing the current cell before saving
                           if  ( table.isEditing() )
                             int row = table.getEditingRow();
                             int col = table.getEditingColumn();
                             table.getCellEditor(row, col).stopCellEditing();
                        int rows = table.getRowCount();
                        int columns = table.getColumnCount();
                        //  Write out the Column Headers
                        TableColumnModel header = table.getColumnModel();
                        for (int k = 0; k < columns; k++)
                             TableColumn column = header.getColumn(k);
                             String value = (String)column.getHeaderValue();
                             System.out.print( value );
                             System.out.print( "|" );
                        System.out.println();
                        //  Write out the table data
                        try{
                               DataOutputStream out2 = new DataOutputStream(
                                          new BufferedOutputStream(
                                            new FileOutputStream("Data.txt")));
                              for (int j = 0; j < rows; j++)
                                       for (int k = 0; k < columns; k++)
                                           String value = (String)table.getValueAt(j, k);
                                            System.out.print( value );
                                            System.out.print( "|" );
                                            out2.writeBytes(",");
                                            out2.writeBytes(value);
                                       out2.close();
                                       System.out.println();
                        catch(IOException ee) {
                              throw new RuntimeException(ee);
         public static void main(String[] args)
              MikeToth frame = new MikeToth();
              frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
              frame.pack();
              frame.setVisible(true);
    }But i dont get good results. In the console the data are perfects: column's name in the first line, and the data of each row in different lines. But when i insert in the file the data are introduced serial in a single line. Example
    In the console i get:
    column1|column2
    3 | 4
    3 | 2
    In the file i get:
    3,4,3,2
    Ok, my question is: can i get the data directly from the console and then introduce it in the file ( with the same format that in the console)??
    Thanks for your time.

    Never Mind, got it to. =)
    this is how i made it work.
    for (int j = 0; j < rows; j++)
                             for (int k = 0; k < columns; k++)
                                  String value = (String)table.getValueAt(j, k);
                                                    out.write("|");
                                                    out.write( value );
                                             out.newLine();
                        }out.close();

  • Problem in Row and column.

    Hi all,
    This is the output for this snippet.
    one Two ---> Column header
    A     B -->Row datas.
    C     D
    E F
    I am missing "G" in the above table.
    What should i to get the output like this?
    one Two ---> Column header
    A     B -->Row datas.
    C     D
    E F
    G
    File: DataFileTable .java
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.io.*;
    import java.util.*;
    public class DataFileTable extends JPanel {
    public DataFileTable() {
    JTable table;
    DataFileTableModel model;
    Font f;
    f = new Font("SanSerif",Font.PLAIN,24);
    setFont(f);
    setLayout(new BorderLayout());
    model = new DataFileTableModel();
    table = new JTable();
    table.setModel(model);
    table.createDefaultColumnsFromModel();
    JScrollPane scrollpane = new JScrollPane(table);
    add(scrollpane);
    public Dimension getPreferredSize(){
    return new Dimension(400, 300);
    public static void main(String s[]) {
    JFrame frame = new JFrame("Data File Table");
    DataFileTable panel;
    panel = new DataFileTable();
    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    frame.setForeground(Color.black);
    frame.setBackground(Color.lightGray);
    frame.getContentPane().add(panel,"Center");
    frame.setSize(panel.getPreferredSize());
    frame.setVisible(true);
    frame.addWindowListener(new WindowCloser());
    class WindowCloser extends WindowAdapter {
    public void windowClosing(WindowEvent e) {
    Window win = e.getWindow();
    win.setVisible(false);
    System.exit(0);
    File:DataFileTableModel.java
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.*;
    import java.io.*;
    import java.util.*;
    public class DataFileTableModel extends AbstractTableModel {
    protected Vector data;
    protected Vector columnNames ;
    public DataFileTableModel(){
    initVectors();
    public void initVectors() {
    String aLine ;
    data = new Vector();
    columnNames = new Vector();
    columnNames.addElement("one");
    columnNames.addElement("two");
    data.addElement("A");
    data.addElement("B");
    data.addElement("C");
    data.addElement("D");
    data.addElement("E");
    data.addElement("F");
    data.addElement("G");
    public int getRowCount() {
    return data.size() / getColumnCount();
    public int getColumnCount(){
    return columnNames.size();
    public String getColumnName(int columnIndex) {
    String colName = "";
    if (columnIndex <= getColumnCount())
    colName = (String)columnNames.elementAt(columnIndex);
    return colName;
    public Class getColumnClass(int columnIndex){
    return String.class;
    public boolean isCellEditable(int rowIndex, int columnIndex) {
    return false;
    public Object getValueAt(int rowIndex, int columnIndex) {
    return (String)data.elementAt( (rowIndex * getColumnCount()) + columnIndex);
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    return;
    }

    Here I would guess your problem is with
    public Object getValueAt(int rowIndex, int columnIndex) {
        return (String)data.elementAt( (rowIndex * getColumnCount()) + columnIndex);
    }Even though you only have seven items in your data Vector, the table will
    still try to populate all the cells in the number of rows you have. So, you
    need to check if the index is greater than the Vector size and return an
    empty string in that case. Something like
    public Object getValueAt(int rowIndex, int columnIndex) {
        int index = rowIndex * getColumnCount() + columnIndex;
        return index < data.size() ?  data.elementAt( index ) : "";
    }

  • Custom aggregate function inside a package.

    Hi there,
    I'm trying to write a custom aggregate function and group that function inside a package together with some other functions that I have. As an example (to simulate the problem I have) suppose my custom aggregation to do a summation of numbers looks like:
    CREATE OR REPLACE TYPE SUM_AGGREGATOR_TYPE AS OBJECT (
    summation NUMBER,
    STATIC FUNCTION ODCIAggregateInitialize(agg_context IN OUT
    SUM_AGGREGATOR_TYPE) RETURN NUMBER,
    MEMBER FUNCTION ODCIAggregateIterate(self IN OUT SUM_AGGREGATOR_TYPE,
    next_number IN NUMBER) RETURN NUMBER,
    MEMBER FUNCTION ODCIAggregateMerge(self IN OUT SUM_AGGREGATOR_TYPE,
    para_context IN SUM_AGGREGATOR_TYPE) RETURN NUMBER,
    MEMBER FUNCTION ODCIAggregateTerminate(self IN SUM_AGGREGATOR_TYPE,
    return_value OUT NUMBER, flags IN NUMBER) RETURN NUMBER
    CREATE OR REPLACE TYPE BODY SUM_AGGREGATOR_TYPE IS
    STATIC FUNCTION ODCIAggregateInitialize(agg_context IN OUT
    SUM_AGGREGATOR_TYPE)
    RETURN NUMBER IS
    BEGIN
    agg_context := SUM_AGGREGATOR_TYPE(NULL);
    RETURN ODCIConst.Success;
    END;
    MEMBER FUNCTION ODCIAggregateIterate(self IN OUT SUM_AGGREGATOR_TYPE,
    next_number IN NUMBER)
    RETURN NUMBER IS
    BEGIN
    IF self.summation IS NULL THEN
    self.summation := next_number;
    ELSIF summation IS NOT NULL THEN
    self.summation := self.summation + next_number;
    END IF;
    RETURN ODCIConst.Success;
    END;
    MEMBER FUNCTION ODCIAggregateMerge(self IN OUT SUM_AGGREGATOR_TYPE,
    para_context IN SUM_AGGREGATOR_TYPE)
    RETURN NUMBER IS
    BEGIN
    self.summation := self.summation + para_context.summation;
    RETURN ODCIConst.Success;
    END;
    MEMBER FUNCTION ODCIAggregateTerminate(self IN SUM_AGGREGATOR_TYPE,
    return_value OUT NUMBER, flags IN NUMBER)
    RETURN NUMBER IS
    BEGIN
    return_value := self.summation;
    return ODCIConst.Success;
    END;
    END;
    If I write the following function definition:
    CREATE OR REPLACE FUNCTION MY_SUM(input NUMBER)
    RETURN NUMBER PARALLEL_ENABLE AGGREGATE USING SUM_AGGREGATOR_TYPE;
    and corresponding type declaration to test:
    CREATE OR REPLACE TYPE VECTOR
    IS
    TABLE OF NUMBER;
    this statement:
    select my_sum(column_value) from table(vector(1, 2, 1, 45, 22, -1));
    gives the correct result of 70. However, creating a package with the function definition:
    CREATE OR REPLACE PACKAGE MY_FUNCTIONS AS
    FUNCTION MY_SUM(input NUMBER)
    RETURN NUMBER PARALLEL_ENABLE AGGREGATE USING SUM_AGGREGATOR_TYPE;
    END;
    and calling it via:
    select MY_FUNCTIONS.my_sum(column_value) from table(vector(1, 2, 1, 45, 22, -1));
    explodes with:
    ORA-00600: internal error code, arguments: [17090], [], [], [], [], [], [], [], [], [], [], []
    Is it possible to have custom aggregate functions nested inside package declarations?
    I'm using Oracle 11g, Release 2 (11.2.0.1.0).

    HiddenName wrote:
    Is it possible to have custom aggregate functions nested inside package declarations?Yes, it is possible, you have succesfuly created your function. Your problem is that the database throws ORA-600 on execute. And with ORA-600 you can do 2 things: 1) google ORA-600 17090 or 2) contact your Oracle Support.
    You could also try to declare the function without PARALLEL_ENABLE - just to try to see if it changes anything. You can also try to call your function against a regular table with rows and columns - not against an collection type with table() operator.
    Anyway - these 2 tests should be usefull for Oracle Support.
    I never tried to put a custom aggregate function into a package. First - the cases when you need a custom aggregate function to be written for your system are very rare. Second - even if I needed 1 then I never needed 2 or more custom aggregate functions on my system. And as I do not like to make my life more complex than necessary, I have created it as a stand-alone function. And it is works (slowly).I tried using a standard table as you suggested:
    CREATE TABLE TEST_DATA
    test_value NUMBER
    INSERT INTO TEST_DATA
    (SELECT column_value test_value from TABLE(vector(1, 2, 1, 45, 22, -1)));
    COMMIT;
    select my_sum(test_value) from test_data;
    select my_functions.my_sum(test_value) from test_data;
    I also tried removing the PARALLEL_ENABLE clause to create the package as follows:
    CREATE OR REPLACE PACKAGE MY_FUNCTIONS AS
    FUNCTION MY_SUM(input NUMBER)
    RETURN NUMBER AGGREGATE USING SUM_AGGREGATOR_TYPE;
    END;
    And unfortunately it still breaks with the following error: SQL Error: ORA-00600: internal error code, arguments: [17090]. This looks like an Oracle bug to me as the PL/SQL parsing engine should have disallowed me to even create this if it is not supported in Oracle. Instead, it allows me to create the package, and breaks when I call the function with this weird error (additionally cutting my connection from the database) instead of disallowing me to do this altogether and printing a nice error message telling me that Oracle doesn't support this. How would I go about logging a ticket for this?
    Edited by: wcmatthysen on Dec 1, 2010 12:51 PM

  • Error when working with TableView using JCA

    Hi sdns,
    I am getting an iview rutnime error when working with Tableview using JCA. Here i am putting all my code, go thorugh it and tell me if any error is there.One more thing is Usermappping and all properties are set to system object.
    Now you can throught he code which is followed by error also.
    <u>Java file.</u>
    public class DisplayComponent extends PageProcessorComponent {
         public DynPage getPage() {
              return new DisplayComponentDynPage();
         public static class DisplayComponentDynPage extends JSPDynPage {
              private JCATviewBean bean;
              public void doInitialization() {
                   IPortalComponentProfile profile =
                        ((IPortalComponentRequest) getRequest())
                             .getComponentContext()
                             .getProfile();
                   Object o = profile.getValue("myBean");
                   if (o == null || !(o instanceof JCATviewBean)) {
                        bean = new JCATviewBean();
                        profile.putValue("myBean", bean);
                   } else {
                        bean = (JCATviewBean) o;
                   // fill your bean with data here...
                   IPortalComponentRequest request =
                        (IPortalComponentRequest) this.getRequest();
                   doJca(request);
              public void doProcessAfterInput() throws PageException {
              public void doProcessBeforeOutput() throws PageException {
                   this.setJspName("Report.jsp");
              private IConnection getConnection(
                   IPortalComponentRequest request,
                   String alias)
                   throws Exception {
                   IConnectorGatewayService cgService =
                        (IConnectorGatewayService) PortalRuntime
                             .getRuntimeResources()
                             .getService(
                             IConnectorService.KEY);
                   ConnectionProperties prop =
                        new ConnectionProperties(
                             request.getLocale(),
                             request.getUser());
                   return cgService.getConnection(alias, prop);
              public void doJca(IPortalComponentRequest request) {
                   IConnectionFactory connectionFactory = null;
                   IConnection client = null;
                   String rfm_name = "BAPI_COMPANYCODE_GETLIST";
                   try {
                        try {
                             //       pass the request & system alias
                             //       Change the alias to whatever the alias is for your R/3 system
                             client = getConnection(request, "MyIDES");
                        } catch (Exception e) {
                             System.out.println(
                                  "Couldn't establish a connection with a target system.");
                             return;
    Start Interaction
                        IInteraction interaction = client.createInteractionEx();
                        IInteractionSpec interactionSpec =
                             interaction.getInteractionSpec();
                        interactionSpec.setPropertyValue("Name", rfm_name);
    CCI api only has one datatype: Record
                        RecordFactory recordFactory = interaction.getRecordFactory();
                        MappedRecord importParams =
                             recordFactory.createMappedRecord(
                                  "CONTAINER_OF_IMPORT_PARAMS");
                        IFunctionsMetaData functionsMetaData =
                             client.getFunctionsMetaData();
                        IFunction function = functionsMetaData.getFunction(rfm_name);
                        if (function == null) {
                             System.out.println(
                                  "Couldn't find " + rfm_name + " in a target system.");
                             return;
    How to invoke Function modules
                        System.out.println("Invoking... " + function.getName());
                        MappedRecord exportParams =
                             (MappedRecord) interaction.execute(
                                  interactionSpec,
                                  importParams);
    How to get structure values
                        IRecord exportStructure = (IRecord) exportParams.get("RETURN");
                        String columnOne = exportStructure.getString("TYPE");
                        String columnTwo = exportStructure.getString("CODE");
                        String columnThree = exportStructure.getString("MESSAGE");
                        System.out.println("  RETURN-TYPE    = " + columnOne);
                        System.out.println("  RETURN-CODE    = " + columnTwo);
                        System.out.println("  RETURN-MESSAGE =" + columnThree);
    How to get table values
                        IRecordSet exportTable =
                             (IRecordSet) exportParams.get("COMPANYCODE_LIST");
                        exportTable.beforeFirst();
                        // Moves the cursor before the first row.
                        while (exportTable.next()) {
                             String column_1 = exportTable.getString("COMP_CODE");
                             String column_2 = exportTable.getString("COMP_NAME");
                             System.out.println(
                                  "  COMPANYCODE_LIST-COMP_CODE = " + column_1);
                             System.out.println(
                                  "  COMPANYCODE_LIST-COMP_NAME = " + column_2);
                        //       create the tableview mode in the bean
                        bean.createData(exportTable);
    Closing the connection
                        client.close();
                   } catch (ConnectorException e) {
                        //       app.putValue("error", e);
                        System.out.println("Caught an exception: \n" + e);
                   } catch (Exception e) {
                        System.out.println("Caught an exception: \n" + e);
    <u>Bena file</u>
    package com.sap.JCA.bean;
    import java.util.Vector;
    import com.sapportals.connector.execution.structures.IRecordSet;
    import com.sapportals.htmlb.table.DefaultTableViewModel;
    import com.sapportals.htmlb.table.TableViewModel;
    public class JCATviewBean {
         public DefaultTableViewModel model;
         public TableViewModel getModel() {
         return this.model;
         public void setModel(DefaultTableViewModel model) {
         this.model = model;
         public void createData(IRecordSet table) {
    //       this is your column names
         Vector column = new Vector();
         column.addElement("Company Code");
         column.addElement("Company Name");
    //       all this logic is for the data part.
         Vector rVector = new Vector();
         try {
         table.beforeFirst();
         while (table.next()) {
         Vector data = new Vector();
         data.addElement(table.getString("COMP_CODE"));
         data.addElement(table.getString("COMP_NAME"));
         rVector.addElement(data);
         } catch (Exception e) {
         e.printStackTrace();
    //       this is where you create the model
         this.setModel(new DefaultTableViewModel(rVector, column));
    <b>JSP File:</b>
    <%@ taglib uri="tagLib" prefix="hbj" %>
    <jsp:useBean id="myBean" scope="application" class="com.sap.JCA.bean.JCATviewBean" />
    <hbj:content id="myContext" >
      <hbj:page title="PageTitle">
       <hbj:form id="myFormId" >
       <br>
       <hbj:textView id = "tv1" text = "<b>TableView Example Using JCA</b> <br>"/>
    <hbj:tableView
        id="myTableView1"
        model="myBean.model"
        design="ALTERNATING"
        headerVisible="true"
        footerVisible="true"
        fillUpEmptyRows="true"
        navigationMode="BYLINE"
        selectionMode="MULTISELECT"
        headerText="TableView example1"
        visibleFirstRow="1"
        visibleRowCount="30"
        width="500 px"
        />
       </hbj:form>
      </hbj:page>
    </hbj:content>
    <b>Error when Executing this component:</b><u></u>
      Portal Runtime Error
    <b>An exception occurred while processing a request for :
    iView : N/A
    Component Name : N/A
    com/sapportals/portal/htmlb/page/PageProcessorComponent.
    Exception id: 12:21_28/10/05_0173_94105150
    See the details for the exception ID in the log file</b>  
    If anybody find the error please reply to this post.
    Regards,
    sireesha.

    Thanks for your response Martin,
    I have already seen the log file but im couldn't findout anything from that since it is so long here im putting some part of please see this.if u able to find it clarify me,
    <b>Here the log file:</b>
    1.5#001321FD6213005D0000907100001CB000040419258FBF4E#1130405957843#trexr3.com.sapmarkets.isa.services.schedulerservice.persistence.jdo.DataBaseJobStore#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.persistence.jdo.DataBaseJobStore#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler/JobStore#Plain###With in the acquireLockForNextAvailableJob DataStore#
    #1.5#001321FD6213005D0000907200001CB00004041925916735#1130405957953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###Acquired the job null#
    #1.5#001321FD6213005D0000907300001CB0000404192591688D#1130405957953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###Did not find any job.So, Waiting for sometime for the next job#
    #1.5#001321FD621300650000120E00001CB00004041925C953D7#1130405961625#com.sap.aii.af.sample.adapter.ra.SPIManagedConnectionFactory##com.sap.aii.af.sample.adapter.ra.SPIManagedConnectionFactory.XIManagedConnectionFactoryController.run()######04d7f690469311da8d52001321fd6213#Thread[Thread-114,5,SAPEngine_System_Thread[impl:5]_Group]##0#0#Debug#1#/Applications/ExchangeInfrastructure/AdapterFramework/ThirdPartyRoot/comsap/Server/Adapter Framework#Java###MCF with GUID is running. (,)#3#964bfca0444711dabb51001321fd6213#com.sap.engine.services.deploy.server.ApplicationLoader@1586c77#964bfca0444711dabb51001321fd6213#
    #1.5#001321FD6213005D0000907400001CB000040419275B24FC#1130405987953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###within the infinite of the Scheduler Thread#
    #1.5#001321FD6213005D0000907500001CB000040419275B25D9#1130405987953#trexr3.com.sapmarkets.isa.services.schedulerservice.persistence.jdo.DataBaseJobStore#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.persistence.jdo.DataBaseJobStore#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler/JobStore#Plain###With in the acquireLockForNextAvailableJob DataStore#
    #1.5#001321FD6213005D0000907600001CB000040419275B2E27#1130405987953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###Acquired the job null#
    #1.5#001321FD6213005D0000907700001CB000040419275B2EFA#1130405987953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###Did not find any job.So, Waiting for sometime for the next job#
    #1.5#001321FD6213005D0000907800001CB0000404192924ED59#1130406017953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###within the infinite of the Scheduler Thread#
    #1.5#001321FD6213005D0000907900001CB0000404192924EE36#1130406017953#trexr3.com.sapmarkets.isa.services.schedulerservice.persistence.jdo.DataBaseJobStore#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.persistence.jdo.DataBaseJobStore#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler/JobStore#Plain###With in the acquireLockForNextAvailableJob DataStore#
    #1.5#001321FD6213005D0000907A00001CB0000404192924F652#1130406017953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###Acquired the job null#
    #1.5#001321FD6213005D0000907B00001CB0000404192924F710#1130406017953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###Did not find any job.So, Waiting for sometime for the next job#
    #1.5#001321FD621300650000120F00001CB000040419295CCD8B#1130406021625#com.sap.aii.af.sample.adapter.ra.SPIManagedConnectionFactory##com.sap.aii.af.sample.adapter.ra.SPIManagedConnectionFactory.XIManagedConnectionFactoryController.run()######04d7f690469311da8d52001321fd6213#Thread[Thread-114,5,SAPEngine_System_Thread[impl:5]_Group]##0#0#Debug#1#/Applications/ExchangeInfrastructure/AdapterFramework/ThirdPartyRoot/comsap/Server/Adapter Framework#Java###MCF with GUID is running. (,)#3#964bfca0444711dabb51001321fd6213#com.sap.engine.services.deploy.server.ApplicationLoader@1586c77#964bfca0444711dabb51001321fd6213#
    #1.5#001321FD6213005D0000907C00001CB0000404192AEEB1E2#1130406047953#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###within the infinite of the Scheduler Thread#
    #1.5#001321FD6213005D0000907D00001CB0000404192AEEB2C0#1130406047953#trexr3.com.sapmarkets.isa.services.schedulerservice.persistence.jdo.DataBaseJobStore#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.persistence.jdo.DataBaseJobStore#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler/JobStore#Plain###With in the acquireLockForNextAvailableJob DataStore#
    #1.5#001321FD6213005D0000907E00001CB0000404192AEEBAD8#1130406047968#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###Acquired the job null#
    #1.5#001321FD6213005D0000907F00001CB0000404192AEEBB9E#1130406047968#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#sap.com/crm.trexr3#trexr3.com.sapmarkets.isa.services.schedulerservice.SchedulerThread#J2EE_ADMIN#530##obtdev3_O09_94105150#Guest#8a2bbd20444711da932c001321fd6213#Thread[SchedulerThread,5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Info#1#/System/Scheduler#Plain###Did not find any job.So, Waiting for sometime for the next job#

  • How to make program eat less memory/enhance performance ?

    Dear experts,
    I have a program that creates 3 tables containing series of line vectors. These are created from data contained in an ascii file. The program performs some calculations on the data. I have everything working perfectly i.e. it creates the tables, does the calculations and gives me the final results which I need (but this only happens when I use a data file that is 88Kb in size).
    However, the frustrating problem I am experiencing currently is that when I use a heavier file e.g size 4.22mb, after a short delay, Windows starts complaining about memory errors and Windows task manager's Mem usage goes through the roof!
    Eventually, I get an Exception in thread ?main? java.lang.OutOfMemoryError <<no stack trace available>> error from the JVM.
    I have tried "java -Xrunhprof" command and it suggests that the real memory hogging line of code is:
    name = ((String) v.elementAt(nj))+"\t"+((String) reference_vec.elementAt(nj));As the program is dynamically allocating and creating a full nxn matrix of the input data lines at run-time that means it is creating zillions of strings at that line? Concatenation of Strings is not a good idea either as this blows performance too. I am thinking of re-writing the program in C. I have run out of ideas. Please can you suggest how I can make some tweaks to the java code so that the program runs more efficiently? Any comments welcome. Program is approx 500 LOC, can post on request.
    d.

    import java.io.*;
    import java.util.*;
              Mobile ID Classification Program - 2003
              Currently known memory bugs -
              15/10/03      -          JVM reports OutOfMemoryError when gsm_data.txt used as input
    public class DataAnalysis {
    /* Data structures used to store values **/
                   private Hashtable Activity = null;
                   private Vector table1 = null;
                   private Vector table2 = null;
                   private Vector table3 = null;
                   private BufferedReader fin;
                   private StringTokenizer st;
         Mobile activity description strings       
         private final String A1 = "IMSI attach";
         private final String A2 = "IMSI detach";
         private final String A3 = "Periodic location update";
         private final String A4 = "Normal location update+authentication";
         private final String A5 = "Service request mobile call";
         private final String A6 = "Service request SMS";
         private final String A7 = "Service request supplementary service activation";
         private final String A8 = "paging response";
         //           private final String A8a = "Paging response+authentication";
         private final String A9 = "Service request energy";
    /*     main function where the program begins execution **/
         public static void main(String args[]) {
                   if(args.length == 0) {
                             System.out.println("File name not specified. Usage : java -Xmx500mb DataAnalysis <file name> ");
              else if(args.length > 1) {
                             System.out.println("Too many parameters. Usage : java -Xmx500mb DataAnalysis <file name> ");
              else {
                                  new DataAnalysis(args[0]);
    /*          Constructor. Takes input file name string as parameter      **/
         public DataAnalysis(String data_file_name) {
                   Activity = new Hashtable();
                                            table1 = new Vector();
                                            table2 = new Vector();
                                            table3 = new Vector();
         //                Parse the input file. Read in lines.
              try{
                   fin= new BufferedReader(new FileReader(data_file_name));
                   String line;
                   while((line = fin.readLine()) != null) {
                        if (line.trim().length() > 0) {
                             tokenize(line);
              catch(Exception e) {
                                  System.out.println(e.getMessage());
              finally {
                   try {
                                  fin.close();                    //       Close the file input stream then 
                   catch(Exception ee) {
                   //           Create the first two tables
                                                           createTable1();
                                                           createTable2();
              //                     Free the memory occupied by table 1
              //                    freeTable(table1);
                        table1 = null;
                                                           createTable3();
                             //                Free the memory occupied by table 2          
                             //                freeTable(table2);
                   table2 = null;
              //                Select all the mobile ids in gsm_data.txt which have a city block distance value less than 0.25 threshold (upper limit)
              System.out.println("--------------------------Table 3 : Relationship between mobile ids using Manhattan City Block distance -------------------------- \n" );
              for(int ni =0;ni<table3.size();ni++) {
                   Vector inner_vec = (Vector) table3.elementAt(ni);
                   for(int nj = 0;nj<(inner_vec.size()-1);nj= nj+2) {
                             float val = ((Float) inner_vec.elementAt(nj)).floatValue();
                             if(val <= 0.25 && val > 0.0)  {                              
                                            System.out.println((String) inner_vec.elementAt(nj+1));
    /*      Returns the index from table 1  **/
         public int getIndexFromTable1(String id) {
              int index = -1;
              for(int ni = 0;ni<table1.size();ni++) {
                   Vector v = (Vector) table1.elementAt(ni);
                   String vect_id = (String) v.elementAt(0);
                   if(vect_id.equalsIgnoreCase(id)) {
                             index = ni;
                             return index;
                        Create table with actual frequency of mobile activity for each mobile id.   
                        Number of times an activity occurred in the input file.          
         public void createTable1() {
                        Enumeration e = Activity.keys();
                        int sum;
              while(e.hasMoreElements()) {
                        Vector table1_row = null;
                        String s = (String) e.nextElement();
                        Integer num = (Integer) Activity.get(s);
                        StringTokenizer st1 = new StringTokenizer(s, "|");
                        String mobile_id = (String) st1.nextToken();
                        String mobile_act = (String) st1.nextToken();
                        int row_index = getIndexFromTable1(mobile_id);
                   if(row_index > 0) {
                                  table1_row = (Vector) table1.elementAt(row_index);
                                  sum = ((Integer) table1_row.lastElement()).intValue();
                   else {
                                       table1_row = new Vector();
                                       sum = 0;                    
                   if(table1_row.contains(mobile_id)) {
                        if(mobile_act.equalsIgnoreCase(A1)) {                              //                IMSI attach activity
                                  table1_row.setElementAt(num, 1);
                                  sum += num.intValue();
                        else if(mobile_act.equalsIgnoreCase(A2)) {                    //                IMSI detach activity
                                  table1_row.setElementAt(num, 2);
                                  sum += num.intValue();
                        else if(mobile_act.equalsIgnoreCase(A3)) {                    //                Periodic location update activity
                                  table1_row.setElementAt(num, 3);
                                  sum += num.intValue();
                        else if(mobile_act.equalsIgnoreCase(A4)) {                    //            Normal location update+authentication activity
                                  table1_row.setElementAt(num, 4);
                                  sum += num.intValue();
                        else if(mobile_act.equalsIgnoreCase(A5)) {                    //            Service request mobile call activity
                                  table1_row.setElementAt(num, 5);
                                  sum += num.intValue();
                        else if(mobile_act.equalsIgnoreCase(A6)) {                    //                Service request SMS activity
                                  table1_row.setElementAt(num, 6);
                                  sum += num.intValue();
                        else if(mobile_act.equalsIgnoreCase(A7)) {                    //                Service request supplementary service activation activity
                                  table1_row.setElementAt(num, 7);
                                  sum += num.intValue();
                        else if(mobile_act.equalsIgnoreCase(A8)) {               //                     Paging response activity                         
                                  table1_row.setElementAt(num, 8);
                                  sum += num.intValue();
                        else if(mobile_act.equalsIgnoreCase(A9)) {               //                    Service request energy activity          
                                  table1_row.setElementAt(num, 9);
                                  sum += num.intValue();
                                  int lastIndex = table1_row.lastIndexOf(table1_row.lastElement());               //       This is the last index which this table
                                  table1_row.setElementAt(new Integer(sum), lastIndex);
                   else {
                        table1_row.addElement(mobile_id);
                        if(mobile_act.equalsIgnoreCase(A1)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                             table1_row.addElement(new Integer("0"));
                        if(mobile_act.equalsIgnoreCase(A2)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                             table1_row.addElement(new Integer("0"));
                        if(mobile_act.equalsIgnoreCase(A3)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                             table1_row.addElement(new Integer("0"));
                        if(mobile_act.equalsIgnoreCase(A4)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                             table1_row.addElement(new Integer("0"));
                        if(mobile_act.equalsIgnoreCase(A5)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                             table1_row.addElement(new Integer("0"));
                        if(mobile_act.equalsIgnoreCase(A6)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                             table1_row.addElement(new Integer("0"));
                        if(mobile_act.equalsIgnoreCase(A7)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                                  table1_row.addElement(new Integer("0"));
                        if(mobile_act.equalsIgnoreCase(A8)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                             table1_row.addElement(new Integer("0"));
                        if(mobile_act.equalsIgnoreCase(A9)) {
                             table1_row.addElement(num);
                             sum += num.intValue();
                        else {
                                       table1_row.addElement(new Integer("0"));
                                       table1_row.addElement(new Integer(sum));
                   if(row_index > 0){
                        //          Replace the vector in table1 with updated vector
                                            table1.remove(row_index);
                                            table1.insertElementAt(table1_row, row_index);
                   else {
                                       //                 Add the row vector to the table vector as a row.
                                                           table1.addElement(table1_row);
                   tableToString(table1, "--------------------------Table 1: Number of times activity occurred in input txt file -------------------------- " );
                        Create table 2 by normalising the data values from table 1 
         public void createTable2() {
              for(int ni = 0;ni<table1.size();ni++) {
                        int sum;
                        String name = "";
                                            Vector table2_row = new Vector();
                                            Vector table1_row = (Vector) table1.elementAt(ni);
                   //            For each record of table 1
                   for(int nj = 0;nj<table1_row.size();nj++) {
                        sum = ((Integer) table1_row.lastElement()).intValue();
                        //               Name of the activity
                        if(nj == 0) {
                                       name = (String) table1_row.elementAt(nj);
                                       table2_row.addElement(table1_row.elementAt(nj));
                        else if (nj == (table1_row.size() - 1)) {
                                  //                Don't do any thing, we dont want the sum of activities in table 2 !
                        else {
                             Integer num = (Integer) table1_row.elementAt(nj);
                             int num_val = num.intValue();
                             if(num_val == 0) {
                                            table2_row.addElement(new Float("0.0"));
                             else {
                                  if(sum > 0.0) {
                                            table2_row.addElement(new Float((float)num_val/sum));
                                  else {
                                            table2_row.addElement(new Float("0.0"));
                        table2.addElement(table2_row);
                                            tableToString(table2, "--------------------------Table 2: Table 1's Normalised Values --------------------------");
              Create table 3 by comparing the relationship between vectors of table 2 using
              the Manhattan City Block distance.
         public void createTable3() {
                   Vector reference_vec = null;
              for(int ni = 0;ni<table2.size();ni++) {
                                  reference_vec = (Vector)table2.elementAt(ni);
                                  createTable3Record(reference_vec);
    /*       public void createTable3Record(Vector reference_vec) {
              //       Vector table3_record = new Vector();
              Table3Record table3_record = new Table3Record();
              for(int ni = 0;ni<table2.size();ni++) {
                   float sum = 0;
                   //           String name = "";
                   Vector v = (Vector) table2.elementAt(ni);        //           each record of table2
                   for(int nj = 0;nj<v.size();nj++) {                    //           for each element of a record of table 2. Iterate through table 2.
                        if (nj == 0) {
                             //           name = ((String) v.elementAt(nj))+"\t"+((String) reference_vec.elementAt(nj));
                                            table3_record.name_prefix = (String) v.elementAt(nj);
                                            table3_record.name_suffix = (String) reference_vec.elementAt(nj);
                                                 //       table3_record.value = sum;                         
                        else {
                                                 float f1 = ((Float) v.elementAt(nj)).floatValue();
                                                 float f2 = ((Float) reference_vec.elementAt(nj)).floatValue();
                                  sum += Math.abs(f1-f2);
                                  table3_record.value = sum;
                                       //               table3_record.addElement(new Float(table3_record.value));                    //                Value
                                       //             table3_record.addElement(table3_record.name);                                             //                Vector Names for that value
                                                      table3.addElement(table3_record);
                                       //                table3_record = null;                         
                   OLD CODE BUT AT LEAST IT WORKS !!  //    Creates a record for the third table            //  OLD CODE BUT IT WORKS
         public void createTable3Record(Vector reference_vec) {
                        Vector table3_record = new Vector();
              for(int ni = 0;ni<table2.size();ni++) {
                        float sum = 0;
                        String name = "";
                        Vector v = (Vector) table2.elementAt(ni);             //           each record of table2
                   for(int nj = 0;nj<v.size();nj++) {                    //           for each element of a record of table 2. Iterate through table 2.
                             if (nj == 0) {
                              name = ((String) v.elementAt(nj))+"\t"+((String) reference_vec.elementAt(nj));               /**  MEMORY BUG  ?   */
                                  //name = new StringBuffer().append((String) v.elementAt(nj)).append("\t").append((String) reference_vec.elementAt(nj)).toString();               
                        else {
                                            float f1 = ((Float) v.elementAt(nj)).floatValue();
                                            float f2 = ((Float) reference_vec.elementAt(nj)).floatValue();
                                            sum += Math.abs(f1-f2);                              //            Calculate the sum
                                            table3_record.addElement(new Float(sum));                    //           Value
                                            table3_record.addElement(name);                                             //           Vector Names for that value
                                            table3.addElement(table3_record);
                                            table3_record = null;
                   Method which breaks the contents of the file which is read into memory for processing 
         public void tokenize(String s) {
                                  st = new StringTokenizer(s, "\t");
                                  String id = "";
                                  //       String time = "";
                                  String activity = "";
              if(st.hasMoreTokens()) {
                                            st.nextToken();                                                            //                      Date e.g. 13052003
                                            //           time = st.nextToken();                                                            //            Time          e.g. 11:30:18
                                            st.nextToken();
                                            st.nextToken();                                                            //                      Frame Number e.g. 166827                              
                                            id = st.nextToken().trim();                                   //                          ID e.g. f47c12cffb or 2943012109009630
                                            st.nextToken();                                                            //                          Classmark  e.g 33
                                            st.nextToken();                                                            //                          Float e.g. 2.2  (the distance from base station)
                                            activity = st.nextToken().trim();                    //                      Activity e.g IMSI attach
                   String key = id+"|"+activity;
                                            key = key.intern();               
                   if (Activity.containsKey(key)) {
                                       Integer num = (Integer) Activity.get(key);
                                       int num_val = num.intValue();
                                       num_val += 1;
                                       num = new Integer(num_val);
                                       Activity.put(key, num);
                   else {
                             Activity.put(key, new Integer(1));               //  Insert key into our Hashtable
                   Frees the memory used by a table 
         public void freeTable(Vector table) {
                        for (int ni = 0;ni<table.size();ni++) {
                                            Vector inner = (Vector) table.elementAt(ni);
                                            inner = null;
                                            table = null;
                   Convert a vector to a string suitable for displaying on console output               
         public void tableToString(Vector table, String table_name){
                   System.out.println(table_name + "\n");
                                  for (Iterator it = table.iterator(); it.hasNext();) {                                                              
                                                 System.out.println(it.next());
                   Function which sepearates mobile id usage beween day/night usage.     
         public void calculateTimeInterval(String t1, String t2){
                             //           t' = t1 - t2          
                             //           Look at all the ids
              Date d1,d2;
                             d1 = new Date(t1);
                             d2 = new Date(t2);
                             // TBD
    }

  • Beginer-Problem with onNavigation

    Hi together,
    I have copied from here a example of calling a bapi and fill a table via ConnectionFactory.
    I have a problem with the event onNavigation. The showing of the next page or next line didn't work.
    I build another with JCo that works fine. Here is my code perhaps someone have an idea:
    <b>Display.java</b>
    public class Display extends PageProcessorComponent {
      private int visibleRow = 1;
      TableBean myBean;
      public DynPage getPage(){
         return new DisplayDynPage();
    //  public static class DisplayDynPage extends JSPDynPage{
         public class DisplayDynPage extends JSPDynPage{
         private TableBean myBean = null;
         public void doInitialization(){
           IPortalComponentProfile profile = ((IPortalComponentRequest)getRequest()).getComponentContext().getProfile();
           Object o = profile.getValue("myBean");
           if(o==null || !(o instanceof TableBean)){
              myBean = new TableBean();
              profile.putValue("myBean",myBean);
           } else {
                myBean = (TableBean) o;
           // fill your bean with data here...
           IPortalComponentRequest request = (IPortalComponentRequest) this.getRequest();
           doJca(request);
         public void doProcessAfterInput() throws PageException {
         public void onNavigation(Event event) {
              if (event instanceof TableNavigationEvent) {
                   TableNavigationEvent tne = (TableNavigationEvent) event;
                   visibleRow = tne.getFirstVisibleRowAfter();
                   if (myBean != null) {
                        myBean.setVisibleRow(new Integer(visibleRow).toString());
         public void doProcessBeforeOutput() throws PageException {
           this.setJspName("display.jsp");
         private IConnection getConnection(
                        IPortalComponentRequest request,
                        String alias)
                        throws Exception {
                        IConnectorGatewayService cgService =
                             (IConnectorGatewayService) PortalRuntime
                                  .getRuntimeResources()
                                  .getService(
                                  IConnectorService.KEY);
                        ConnectionProperties prop =
                             new ConnectionProperties(
                                  request.getLocale(),
                                  request.getUser());
                        return cgService.getConnection(alias, prop);
         public void doJca(IPortalComponentRequest request) {
           IConnectionFactory connectionFactory = null;
           IConnection client = null;
           String rfm_name = "BAPI_COMPANYCODE_GETLIST";
           try {     
              try {
                   //pass the request & system alias
                   //Change the alias to whatever the alias is for your R/3 system
                   client = getConnection(request, "SAP_R3_SalesService");
              } catch (Exception e) {
                          System.out.println(
                               "Couldn't establish a connection with a target system.");
                          return;
               * Start Interaction
              IInteraction interaction = client.createInteractionEx();
              IInteractionSpec interactionSpec = interaction.getInteractionSpec();
              interactionSpec.setPropertyValue("Name", rfm_name);
               * CCI api only has one datatype: Record
              RecordFactory recordFactory = interaction.getRecordFactory();
              MappedRecord importParams = recordFactory.createMappedRecord("CONTAINER_OF_IMPORT_PARAMS");
              IFunctionsMetaData functionsMetaData = client.getFunctionsMetaData();
              IFunction function = functionsMetaData.getFunction(rfm_name);
              if (function == null) {
                   System.out.println(
                   "Couldn't find " + rfm_name + " in a target system.");
                return;
               * How to invoke Function modules
              System.out.println("Invoking... " + function.getName());
              MappedRecord exportParams = (MappedRecord) interaction.execute(interactionSpec, importParams);
               * How to get structure values
              IRecord exportStructure = (IRecord) exportParams.get("RETURN");
              String columnOne = exportStructure.getString("TYPE");
              String columnTwo = exportStructure.getString("CODE");
              String columnThree = exportStructure.getString("MESSAGE");
              System.out.println("  RETURN-TYPE    = " + columnOne);
              System.out.println("  RETURN-CODE    = " + columnTwo);
              System.out.println("  RETURN-MESSAGE =" + columnThree);
               * How to get table values
              IRecordSet exportTable = (IRecordSet) exportParams.get("COMPANYCODE_LIST");
              exportTable.beforeFirst(); // Moves the cursor before the first row.
              while (exportTable.next()) {
                String column_1 = exportTable.getString("COMP_CODE");
                String column_2 = exportTable.getString("COMP_NAME");
                System.out.println("  COMPANYCODE_LIST-COMP_CODE = " + column_1);
                System.out.println("  COMPANYCODE_LIST-COMP_NAME = " + column_2);
              //create the tableview mode in the bean
              myBean.createData(exportTable);
               * Closing the connection
              client.close();
           } catch (ConnectorException e) {
              //app.putValue("error", e);
              System.out.println("Caught an exception: n" + e);
           } catch (Exception e) {
              System.out.println("Caught an exception: n" + e);
    The Bean:
    public class TableBean implements Serializable {
         private String visibleRow = "1";
         private String selectedRows;
         private DefaultTableViewModel model;
         public TableViewModel getModel() {
              return this.model;
         public void setModel(DefaultTableViewModel model) {
              this.model = model;
         // <b>get/setVisibleRow for tableView</b>
         public String getVisibleRow() {
              return this.visibleRow;
         public void setVisibleRow(String visibleRow) {
              this.visibleRow = visibleRow;
         public void createData(IRecordSet table) {
              //this is your column names
              Vector column = new Vector();
              column.addElement("Company Code");
              column.addElement("Company Name");
              //all this logic is for the data part.
              Vector rVector = new Vector();
              try {
                   table.beforeFirst();
                   while (table.next()) {
                        Vector data = new Vector();
                        data.addElement(table.getString("COMP_CODE"));
                        data.addElement(table.getString("COMP_NAME"));
                        rVector.addElement(data);
              } catch (Exception e) {
                   e.printStackTrace();
              //this is where you create the model
              this.setModel(new DefaultTableViewModel(rVector, column));
    The .jsp
    <%@ taglib uri="tagLib" prefix="hbj" %>
    <jsp:useBean id="myBean" scope="application" class="com.test.TableBean" />
    <hbj:content id="myContext" >
      <hbj:page title="PageTitle">
       <hbj:form id="myFormId" >
      <hbj:tableView
        id="myTableView1"
        model="myBean.model"
        design="ALTERNATING"
        headerVisible="true"
        footerVisible="true"
        fillUpEmptyRows="true"
        navigationMode="BYLINE"
        selectionMode="MULTISELECT"
        headerText="TableView example 1"
        onNavigate="onNavigation"
        visibleFirstRow="<%= myBean.getVisibleRow() %>"
        visibleRowCount="10"
        width="500 px"
        />
       </hbj:form>
      </hbj:page>
    </hbj:content>
    Regards Thomas

    Hi Thomas,
    > tell a question and other people asking for the code
    Yes, of course, no question. Code helps to eliminate an error, but less code - helps more...
    > It's difficult to strip down the question
    > and the code, in the case if I have no idea
    > where the mistake is.
    Exactly that's the reason why you should start this way, for you will have a good chance to find out just the portion where the mistake is in. And - as written - even if not, you've done half the work otherwise maybe three people would do in parallel trying to help you (if you find three people trying to go through that many lines of code).
    I don't know if you've ever opened a bug report at SUN, for example. They just would reject such a report. And even if it may be some work to locate the problem exactly, I have sympathy for such a procedure, for this is the part the questioner can do.
    In the end, it helps you to understand, maybe to solve the issue, and if you don't solve it that way, it helps you to find more people willing to attend to this problem.
    > I have marked this topic as solved
    > by myself some hours later
    Would be great to tell others what the error has been, so that also other people are able to learn from your experience.
    Best regards
    Detlev

Maybe you are looking for

  • Non supported character set error

    Hello, I have a j2ee application that uses OLAP API to make queries against cubes created with cwm2 packages, in a database (db 1). I've replicated the schema in another db (db 2), importing the user (with a dmp file) and throwing the object creation

  • Can't see music on cloud

    I have my music on my cloud and my iPhone can see it but my new mini iPad and apple computer can't see the cloud. I have the match on and signed up for a yr. what is wrong

  • Plotting Senderbase Information on a World Map

    Greetings, I have whipped up a quick script some of you may find useful. ip2mapplot.py is a Python script for resolving a number of IP addresses to latitude / longitude coordinates and plotting them on a world map Below is an image generated from one

  • Multiple Selection on a block

    Hi experts, How can i make multiple selection on a detail block (in ascending order) and save the selected data on database.? can i have a sample code please? Thanks, mr. baguhan

  • Can i delete an app from the icloud?

    Is there any possibility of deleting an app from the icloud? I've been trying,but no success... Please help me... Thanks