Need your help on performance issue please

Hello everyone!
I need your help to understand an effect I notice with a Thread class I built. I currently work on enhancement of my application Playlist Editor (see http://www.lightdev.com/page74.htm) and a new release will be available soon.
Among other extensions the new release will have a title filter function which is based on audio data that is recursively read from ID3 tags of files found in a given root directory. The data collection is done by a CollectionThread class which reads into a data model class AudioDataModel and the entire process works fine, no problem with that.
However, when my application is started for the first time the CollectionThread runs approximately 3 minutes to collect data from approximately 4300 audio files on an Intel Pentium M 1,4 GHz, 512 MB RAM, Windows XP SP2. When the application is shut down and started again, it takes only a few seconds to do the same task for all subsequent launches.
I already tried to start the application with java option -Xms40m to increase initial heap size. This increases performance in general but the effect is still the same, i.e. first run lasts significantly longer than subsequent runs.
I also tried to build a pool mechanism which creates many empty objects in the data model and then releases them to contain the actual data at is being read in but this did not lead to better performance.
It must have to do with how Java (or Windows?) allocates and caches memory. I wonder whether there is a way to pre-allocate memory or if there are any other ideas to improve performance so that the process always only takes seconds instead of minutes?
I attach the key classes to this message. Any help or ideas is much appreciated!
Thanks a lot a best regards
Ulrich
PS: You can use the news subscription service at
http://www.lightdev.com/dynTemplate.php4?id=80&dynPage=subscribe.php4 to be informed when the new release of Playlist Editor is available.
All classes posted here do not need debugging, they already have proven to run error free. The classes are only posted for information for the interested reader - no need to go through all the stuff in detail - only if it interests you.
My application calls class CollectionThread wich is a subclass of InfoThread. CollectionThread recursively goes through a directory and file structure and stores found ID3 tag information in instances of class ID3v11Tag which in turn gets stored in one instance of class AudioDataModel. All classes are shown below.
This is the mentioned CollectionThread
* Light Development Playlist Editor
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
package com.lightdev.app.playlisteditor.data;
import com.lightdev.lib.util.InfoThread;
import java.io.File;
* A class to collect audio data from a given storage location.
* <p>
* <code>CollectionThread</code> uses ID3 tag information to gain data.
* </p>
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
*      GNU General Public License,
*      for details see file gpl.txt in the distribution
*      package of this software as well as any licensing notes
*      inside this documentation
* @version 1, October 13, 2004
public class CollectionThread extends InfoThread {
   * constructor
   * @param model  AudioDataModel  the data model to collect data to
  public CollectionThread(AudioDataModel model) {
    this.model = model;
   * constructor, creates a new empty AudioDataModel
  public CollectionThread() {
    this(new AudioDataModel());
   * set the data model to collect data to
   * @param model AudioDataModel  the model to collect data to
  public void setModel(AudioDataModel model) {
    this.model = model;
   * get the data model associated to this thread
   * @return AudioDataModel  the data model
  public AudioDataModel getModel() {
    return model;
   * set the directory to collect data from
   * @param rootDir File  the directory to collect data from
  public void setRootDirectory(File rootDir) {
    this.rootDir = rootDir;
   * do te actual work of this thread, i.e. iterate through a given directory
   * structure and collect audio data
   * @return boolean  true, if work is left
  protected boolean work() {
    boolean workIsLeft = true;
    maxValue = -1;
    filesProcessed = 0;
    if(getStatus() < STATUS_HALT_PENDING) {
      countElements(rootDir.listFiles());
    if(getStatus() < STATUS_HALT_PENDING) {
      workIsLeft = collect(rootDir.listFiles());
    return workIsLeft;
   * count the elements in a given file array including its subdirectories
   * @param files File[]
  private void countElements(File[] files) {
    int i = 0;
    while (i < files.length && getStatus() < STATUS_HALT_PENDING) {
      File file = files;
if (file.isDirectory()) {
countElements(file.listFiles());
i++;
maxValue++;
* recursively read data into model
* @param files File[] the file array representing the content of a given directory
private boolean collect(File[] files) {
int i = 0;
while(i < files.length && getStatus() < STATUS_HALT_PENDING) {
File file = files[i];
if(file.isDirectory()) {
collect(file.listFiles());
else if(file.getName().toLowerCase().endsWith("mp3")) {
try {
model.addTrack(file);
catch(Exception e) {
fireThreadException(e);
i++;
filesProcessed++;
fireThreadProgress(filesProcessed);
return (i<files.length);
/** the directory to collect data from */
private File rootDir;
/** the data model to collect data to */
private AudioDataModel model;
/** the number of files this thread processed so far while it is running */
private long filesProcessed = 0;
This is class InfoThread
* Light Development Java Library
* Copyright (C) 2003, 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
package com.lightdev.lib.util;
import java.util.Vector;
import java.util.Enumeration;
* Abstract class <code>InfoThread</class> implements a status and listener concept.
* An <code>InfoThread</code> object actively informs all objects registered as listeners about
* status changes, progress and possible exceptions. This way the status of a running
* thread does not require a polling mechanism to be monitored.
* <p>
* <code>InfoThread</code> implements the following working scheme
* </p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
*      GNU General Public License,
*      for details see file gpl.txt in the distribution
*      package of this software
* @version Version 1, October 13, 2004
public abstract class InfoThread extends Thread {
   * construct an <code>InfoThread</code> object
   * <p>This class is meant to be used when a <code>Thread</code> object is needed that actively
   * informs other objects about its status</code>. It is a good idea therefore to register
   * one or more listeners with instances of this class before doing anything
   * else.</p>
   * @see addInfoThreadListener
  public InfoThread() {
   * set the amount of time this thread shall idle after it is through with one
   * work cycle and before a next work cycle is started. This influences the time
   * other threads have for their work.
   * @param millis long  the number of milliseconds to idle after one work cycle
  public void setIdleMillis(long millis) {
    idleMillis = millis;
   * Causes this thread to begin execution; the Java Virtual Machine calls the <code>run</code>
   * method of this thread. Calls method <code>prepareThread</code> before calling
   * <code>run</code>.
   * @see run
   * @see prepareThread
  public synchronized void start() {
    setStatus(STATUS_INITIALIZING);
    prepareThread();
    setStatus(STATUS_READY);
    super.start();
   * call method <code>start</code> instead of this method.
   * calling this method directly will lead to an exception
   * @see start
  public void run() {
    //System.out.println("InfoThread.run");
    if (status == STATUS_READY) {
      boolean workIsLeft = true;
      setStatus(STATUS_RUNNING);
      while (status < STATUS_STOP_PENDING && workIsLeft) {
        if (status < STATUS_HALT_PENDING) {
          workIsLeft = work();
          if(!workIsLeft) {
            setStatus(STATUS_WORK_COMPLETE);
        if (status == STATUS_HALT_PENDING) {
          setStatus(STATUS_HALTED);
        else if (status == STATUS_STOP_PENDING) {
          setStatus(STATUS_STOPPED);
        else {
          try {
            sleep(idleMillis);
          catch (InterruptedException e) {
            fireThreadException(e);
    else {
      // error: Thread is not ready to run
    setStatus(STATUS_THREAD_FINISHED);
   * stop this thread. This will terminate the thread irrevokably. Use method
   * <code>haltThread</code> to pause a thread with the possiblity to resume work later.
   * @see haltThread
  public void stopThread() {
    switch (status) {
      case STATUS_RUNNING:
        setStatus(STATUS_STOP_PENDING);
        break;
      case STATUS_HALT_PENDING:
        // exception: the thread already is about to halt
        break;
      case STATUS_STOP_PENDING:
        // exception: the thread already is about to stop
        break;
      default:
        // exception: a thread can not be stopped, when it is not running
        break;
   * halt this thread, i.e. pause working allowing to resume later
   * @see resumeThread
  public void haltThread() {
    switch (status) {
      case STATUS_RUNNING:
        setStatus(STATUS_STOP_PENDING);
        break;
      case STATUS_HALT_PENDING:
        // exception: the thread already is about to halt
        break;
      case STATUS_STOP_PENDING:
        // exception: the thread already is about to stop
        break;
      default:
        // exception: a thread can not be halted, when it is not running
        break;
   * resume this thread, i.e. resume previously halted work
   * @see haltThread
  public void resumeThread() {
    if(status == STATUS_HALTED || status == STATUS_HALT_PENDING) {
      setStatus(STATUS_RUNNING);
    else {
      // exception: only halted threads or threads that are about to halt can be resumed
   * this is the method to prepare a thread to run. It is not implemented in this abstract
   * class. Subclasses of <code>InfoThread</code> can implement this method to do anything
   * that might be required to put their thread into STATUS_READY. This method is called
   * automatically by method <code>start</code>.  When implementing this method, it should
   * call method <code>fireThreadException</code> accordingly.
   * @see start
   * @see fireThreadException
  protected void prepareThread() {
    // does nothing in this abstract class but might be needed in subclasses
   * this is the main activity method of this object. It is not implemented in this abstract
   * class. Subclasses of <code>InfoThread</code> must implement this method to do something
   * meaningful. When implementing this method, it should call methods
   * <code>fireThreadProgress</code> and <code>fireThreadException</code> accordingly.
   * @return boolean true, if work is left, false if not
   * @see fireThreadProgress
   * @see fireTreadException
  protected abstract boolean work();
   * add an <code>InfoTreadListener</code> to this instance of <code>InfoThread</code>
   * @param l InfoThreadListener  the listener to add
   * @see removeInfoThreadListener
  public void addInfoThreadListener(InfoThreadListener l) {
    listeners.add(l);
   * remove an <code>InfoTreadListener</code> from this instance of <code>InfoThread</code>
   * @param l InfoThreadListener  the listener to remove
  public void removeInfoThreadListener(InfoThreadListener l) {
    listeners.remove(l);
   * notify all <code>InfoThreadListener</code>s of a status change
   * @param fromStatus int  the status tis thread had before the change
   * @param toStatus int  the status this thread has now
  protected void fireThreadStatusChanged(int fromStatus, int toStatus) {
    Enumeration e = listeners.elements();
    while(e.hasMoreElements()) {
      Object l = e.nextElement();
      if(l instanceof InfoThreadListener) {
        ((InfoThreadListener) l).threadStatusChanged(this, fromStatus, toStatus);
   * notify all <code>InfoThreadListener</code>s of an exception in this thread
   * @param ex Exception  the exception that occurred
  protected void fireThreadException(Exception ex) {
    Enumeration e = listeners.elements();
    while(e.hasMoreElements()) {
      Object l = e.nextElement();
      if(l instanceof InfoThreadListener) {
        ((InfoThreadListener) l).threadException(this, ex);
   * notify all <code>InfoThreadListener</code>s of the progress of this thread
   * @param progressValue long  a value indicating the current thread progress
  protected void fireThreadProgress(long progressValue) {
    Enumeration e = listeners.elements();
    while(e.hasMoreElements()) {
      Object l = e.nextElement();
      if(l instanceof InfoThreadListener) {
        ((InfoThreadListener) l).threadProgress(this, progressValue, maxValue);
   * set the status of this thread and notify all listeners
   * @param newStatus int  the status this thread is to be changed to
  private void setStatus(int newStatus) {
    //System.out.println("InfoThread.setStatus oldStatus=" + status + ", newStatus=" + newStatus);
    int fromStatus = status;
    status = newStatus;
    fireThreadStatusChanged(fromStatus, newStatus);
   * get the current status of this thread
   * @return int  the status
  public int getStatus() {
    return status;
   * cleanup before actual destruction.
  public void destroy() {
    //System.out.println("InfoThread.destroy");
    cleanup();
    super.destroy();
   * cleanup all references this thread maintains
  private void cleanup() {
    //System.out.println("InfoThread.cleanup");
    listeners.removeAllElements();
    listeners = null;
  /* ----------------------- class fields start ------------------------ */
  /** storage for the objects this thread notifies about status changes and progress */
  private Vector listeners = new Vector();
  /** indicator for the status of this thread */
  private int status = STATUS_NONE;
  /** maximum value for threadProgress */
  protected long maxValue = -1;
  /** the idle time inside one work cycle in milliseconds */
  protected long idleMillis = 1;
  /* ----------------------- class fields end -------------------------- */
  /* ----------------------- constants start --------------------------- */
  /** constant value indicating that no status has been set so far */
  public static final int STATUS_NONE = 0;
  /** constant value indicating that the thread is currently initializing */
  public static final int STATUS_INITIALIZING = 1;
  /** constant value indicating that the thread is ready to run */
  public static final int STATUS_READY = 2;
  /** constant value indicating that the thread is running */
  public static final int STATUS_RUNNING = 3;
  /** constant value indicating that the thread is about to halt */
  public static final int STATUS_HALT_PENDING = 4;
  /** constant value indicating that the thread is halted */
  public static final int STATUS_HALTED = 5;
  /** constant value indicating that the work of this thread is complete */
  public static final int STATUS_WORK_COMPLETE = 6;
  /** constant value indicating that the thread is about to stop */
  public static final int STATUS_STOP_PENDING = 7;
  /** constant value indicating that the thread is stopped */
  public static final int STATUS_STOPPED = 8;
  /** constant value indicating that the thread is finished */
  public static final int STATUS_THREAD_FINISHED = 9;
  /* ----------------------- constants end --------------------------- */
}this is the InfoThreadListener interface
* Light Development Java Library
* Copyright (C) 2003, 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
package com.lightdev.lib.util;
* An interface classes interested to receive events from objects
* of class <code>InfoThread</code> need to implement.
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
*      GNU General Public License,
*      for details see file gpl.txt in the distribution
*      package of this software
* @version Version 1, October 13, 2004
public interface InfoThreadListener {
   * method to receive a status change notification from a thread
   * @param thread InfoThread  the thread which status changed
   * @param fromStatus int  the status which the thread had before the change
   * @param toStatus int  the status which the thread has now
  public void threadStatusChanged(InfoThread thread, int fromStatus, int toStatus);
   * method to receive a notification about the progress of a thread
   * @param thread InfoThread  the thread which notified about its progress
   * @param progressValue long  the value (e.g. 10 if 100 percent completed, 20 of 1 million files processed, etc.)
  public void threadProgress(InfoThread thread, long progressValue, long maxValue);
   * method to receive a notifiaction about the fact that an exception occurred in a thread
   * @param thread InfoThread  the thread for which an exception occurred
   * @param e Exception  the exception that occurred
  public void threadException(InfoThread thread, Exception e);
}This is class AudioFileDescriptor
* Light Development Java Library
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
package com.lightdev.lib.audio;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.Serializable;
import java.text.DecimalFormat;
* This class models characteristics of an audio file such as the absolute path
* of the file, its tag contents (if any) and the play duration, etc.
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
*      GNU General Public License,
*      for details see file gpl.txt in the distribution
*      package of this software
* @version Version 1, October 13, 2004
public class AudioFileDescriptor implements Serializable, Comparable {
  public AudioFileDescriptor(String absolutePath) throws FileNotFoundException, IOException {
    load(absolutePath);
  public boolean equals(Object o) {
    if(o != null && o instanceof AudioFileDescriptor) {
      return ((AudioFileDescriptor) o).getAbsolutePath().equalsIgnoreCase(this.getAbsolutePath());
    else {
      return false;
  public void load(String absolutePath) throws FileNotFoundException, IOException {
    this.absolutePath = absolutePath;
    RandomAccessFile rf = new RandomAccessFile(absolutePath, "r");
    if(id3v11Tag == null) {
      id3v11Tag = new ID3v11Tag(rf, false);
    else {
      id3v11Tag.readTag(rf, rf.length() - 128);
    rf.close();
  public String getAbsolutePath() {
    return absolutePath;
  public ID3v11Tag getID3v11Tag() {
    return id3v11Tag;
  public void setID3v11Tag(ID3v11Tag tag) {
    this.id3v11Tag = tag;
  public String toString() {
    DecimalFormat df = new DecimalFormat("00");
    return id3v11Tag.getArtist() + ", " + id3v11Tag.getAlbum() + " - " +
        df.format(id3v11Tag.getTrackNumber()) + " " + id3v11Tag.getTitle();
   * Compares this object with the specified object for order.
   * @param o the Object to be compared.
   * @return a negative integer, zero, or a positive integer as this object is less than, equal to,
   *   or greater than the specified object.
   * @todo Implement this java.lang.Comparable method
  public int compareTo(Object o) {
    return toString().compareTo(o.toString());
  private String absolutePath;
  private ID3v11Tag id3v11Tag;
  private transient long duration = -1;
  private transient int type = TYPE_UNKNOWN;
  public static final transient int TYPE_UNKNOWN = 0;
  public static final transient int TYPE_MP3 = 1;
}This is class ID3V11Tag into which the data is actually stored
* Light Development Java Library
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
package com.lightdev.lib.audio;
import java.io.File;
import java.io.RandomAccessFile;
import java.io.IOException;
import java.io.Serializable;
import java.text.DecimalFormat;
* This class is a very simple implementation of an ID3v11Tag. It models an ID3 tag
* pretty much the same way as it is physically stored inside an audio file.
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
*      GNU General Public License,
*      for details see file gpl.txt in the distribution
*      package of this software
* @version Version 1, October 13, 2004
public class ID3v11Tag implements Serializable, Comparable {
   * construct an ID3v11Tag and read tag content from a given file
   * <p>This constructor can be used for cases where a RandomAccessFile has already
   * been opened and will be closed elsewhere</p>
   * @param rf RandomAccessFile  the open file to read from
   * @param isAtTagStartPos boolean  true, if the file pointer is at the
   * position where the ID3 tag starts; when false, the pointer is positioned accordingly here
   * @throws IOException
  public ID3v11Tag(RandomAccessFile rf, boolean isAtTagStartPos) throws IOException {
    if(isAtTagStartPos) {
      readTag(rf);
    else {
      readTag(rf, rf.length() - 128);
   * construct an ID3v11Tag and read tag content from a file at a given location
   * <p>This constructor opens and closes the audio file for reading</p>
   * @param absolutePath String  the absolute path to the audio file to open
   * @throws IOException
  public ID3v11Tag(String absolutePath) throws IOException {
    RandomAccessFile rf = new RandomAccessFile(absolutePath, "r");
    readTag(rf, rf.length() - 128);
    rf.close();
   * construct an ID3v11Tag and read tag content from a given file
   * <p>This constructor opens and closes the audio file for reading</p>
   * @param audioFile File  the audio file to read from
   * @throws IOException
  public ID3v11Tag(File audioFile) throws IOException {
    this(audioFile.getAbsolutePath());
   * get a string representation of this object
   * @return String
  public String toString() {
    DecimalFormat df = new DecimalFormat("00");
    return getArtist() + ", " + getAlbum() + " - " + df.format(getTrackNumber()) + " " + getTitle();
   * position to file pointer and read the tag
   * @param rf RandomAccessFile  the file to read from
   * @param jumpPos long  the position to jump to (the tag start position)
   * @throws IOException
  public void readTag(RandomAccessFile rf, long jumpPos) throws IOException {
    rf.seek(jumpPos);
    readTag(rf);
   * read the tag from a given file, assuming the file pointer to be at the tag start position
   * @param rf RandomAccessFile  the file to read from
   * @throws IOException
  public void readTag(RandomAccessFile rf) throws IOException {
    rf.read(tagBuf);
    if(tag.equalsIgnoreCase(new String(tagBuf))) {
      rf.read(title);
      rf.read(artist);
      rf.read(album);
      rf.read(year);
      rf.read(comment);
      rf.read(trackNo);
      rf.read(genre);
  public String getTitle() {
    return new String(title).trim();
  public String getArtist() {
    return new String(artist).trim();
  public String getAlbum() {
    return new String(album).trim();
  public String getYear() {
    return new String(year).trim();
  public String getComment() {
    return new String(comment).trim();
  public int getGenreId() {
    try {
      int id = new Byte(genre[0]).intValue();
      if(id < GENRE_ID_MIN || id > GENRE_ID_MAX) {
        return GENRE_ID_OTHER;
      else {
        return id;
    catch(Exception ex) {
      return GENRE_ID_OTHER;
  public String getGenreName() {
    return genreNames[getGenreId()];
  public int getTrackNumber() {
    try {
      return (int) trackNo[0];
    catch(Exception e) {
      return 0;
   * Compares this object with the specified object for order.
   * @param o the Object to be compared.
   * @return a negative integer, zero, or a positive integer as this object is less than, equal to,
   *                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

Hi Franck,
thank you, mate. I did what you suggested (changed class attached) but that did not change the mentioned behaviour.
The first run is approximately 75 seconds with Java option -Xms40m and approx. double without, the second run and all subsequent runs are only 2-3 seconds each (!!!) even when terminating and re-starting the application between thread runs.
I'm pretty clueless about that, any more help on this anyone?
Thanks a lot and best regards
Ulrich
PS: BTW, I forgot to post the class that is filled with data by class CollectionThread, so here it is
* Light Development Playlist Editor
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
package com.lightdev.app.playlisteditor.data;
import java.io.File;
import com.lightdev.lib.audio.ID3v11Tag;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.IOException;
import java.io.Serializable;
import com.lightdev.lib.audio.AudioFileDescriptor;
import com.lightdev.lib.ui.SortListModel;
import java.util.Iterator;
* Storage model for audio data.
* <p>
* <code>AudioDataModel</code> can be used to store ID3 tag data collected from
* a directory with audio files to perform queries and reports on the found data.
* </p>
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
*      GNU General Public License,
*      for details see file gpl.txt in the distribution
*      package of this software as well as any licensing notes
*      inside this documentation
* @version 1, October 15, 2004
public class AudioDataModel extends SortListModel implements Serializable {
   * constructor
  public AudioDataModel() {
   * add an audio track from a given audio file
   * <p>This will attempt to read ID3 tag data from the file.</p>
   * @param audioFile File  the file to add audio data for
   * @throws IOException
  public void addTrack(File audioFile) throws IOException {
    AudioFileDescriptor afd = new AudioFileDescriptor(audioFile.getAbsolutePath());
    if (!data.contains(afd)) {
      data.add(afd);
   * get all tracks for agiven combination of genre name, artist name and album name. Any of
   * the parameters may be null or AudioDataModel.FILTER_ALL
   * <p>Ugly code, I know, but it simply hard codes all combinations of the the mentioned
   * parameters. Any more elegant implementations welcome.</p>
   * @param genreName String  a genre name to get tracks for
   * @param artistName String  an artist name to get tracks for
   * @param albumName String  an album name to get tracks for
   * @return SortListModel   the found tracks in a list model
  public SortListModel getTracks(String genreName, String artistName, String albumName) {
    SortListModel foundTracks = new SortListModel();
    Iterator e = data.iterator();
    while(e.hasNext()) {
      AudioFileDescriptor afd = (AudioFileDescriptor) e.next();
      ID3v11Tag tag = afd.getID3v11Tag();
      if(genreName == null || genreName.equalsIgnoreCase(FILTER_ALL)) {
        if(artistName == null || artistName.equalsIgnoreCase(FILTER_ALL)) {
          if (tag.getAlbum().equalsIgnoreCase(albumName))
            foundTracks.add(afd);
        else {
          if(albumName == null || albumName.equalsIgnoreCase(FILTER_ALL)) {
            if (tag.getArtist().equalsIgnoreCase(artistName))
              foundTracks.add(afd);
          else {
            if (tag.getArtist().equalsIgnoreCase(artistName) &&
                tag.getAlbum().equalsIgnoreCase(albumName))
              foundTracks.add(afd);
      else {
        if(artistName == null || artistName.equalsIgnoreCase(FILTER_ALL)) {
          if(albumName == null || albumName.equalsIgnoreCase(FILTER_ALL)) {
            if (tag.getGenreName().equalsIgnoreCase(genreName))
              foundTracks.add(afd);
          else {
            if (tag.getGenreName().equalsIgnoreCase(genreName) &&
                tag.getAlbum().equalsIgnoreCase(albumName))
              foundTracks.add(afd);
        else {
          if(albumName == null || albumName.equalsIgnoreCase(FILTER_ALL)) {
            if (tag.getGenreName().equalsIgnoreCase(genreName) &&
                tag.getArtist().equalsIgnoreCase(artistName))
              foundTracks.add(afd);
          else {
            if (tag.getGenreName().equalsIgnoreCase(genreName) &&
                tag.getArtist().equalsIgnoreCase(artistName) &&
                tag.getAlbum().equalsIgnoreCase(albumName))
              foundTracks.add(afd);
    foundTracks.sort();
    return foundTracks;
   * list all artists in this model
   * @return SortListModel
  public SortListModel listArtists() {
    SortListModel artists = new SortListModel();
    artists.add(FILTER_ALL);
    Iterator e = data.iterator();
    while (e.hasNext()) {
      ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
      String artistName = tag.getArtist();
      if (artists.indexOf(artistName) < 0) {
        artists.add(artistName);
    artists.sort();
    return artists;
   * list all artists in this model having titles belonging to a given genre
   * @param genreName String  name of the genre artists are searched for
   * @return SortListModel
  public SortListModel listArtists(String genreName) {
    SortListModel artists = new SortListModel();
    artists.add(FILTER_ALL);
    Iterator e = data.iterator();
    while (e.hasNext()) {
      ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
      String artistName = tag.getArtist();
      String genre = tag.getGenreName();
      if (artists.indexOf(artistName) < 0 && genre.equalsIgnoreCase(genreName)) {
        artists.add(artistName);
    artists.sort();
    return artists;
   * list all genres in this model
   * @return SortListModel
  public SortListModel listGenres() {
    SortListModel genres = new SortListModel();
    genres.add(FILTER_ALL);
    Iterator e = data.iterator();
    while (e.hasNext()) {
      ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
      String genreName = tag.getGenreName();
      if (genres.indexOf(genreName) < 0) {
        genres.add(genreName);
    genres.sort();
    return genres;
   * list all albums in this model
   * @return SortListModel
  public SortListModel listAlbums() {
    SortListModel albums = new SortListModel();
    albums.add(FILTER_ALL);
    Iterator e = data.iterator();
    while (e.hasNext()) {
      ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
      String albumName = tag.getAlbum();
      if (albums.indexOf(albumName) < 0) {
        albums.add(albumName);
    albums.sort();
    return albums;
   * list all albums in this model having titles belonging to a given genre
   * @param genreName String  name of the genre albums are searched for
   * @return SortListModel
  public SortListModel listAlbums(String genreName) {
    SortListModel albums = new SortListModel();
    albums.add(FILTER_ALL);
    Iterator e = data.iterator();
    while (e.hasNext()) {
      ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
      String albumName = tag.getAlbum();
      String genre = tag.getGenreName();
      if (albums.indexOf(albumName) < 0 && genre.equalsIgnoreCase(genreName)) {
        albums.add(albumName);
    albums.sort();
    return albums;
   * list all albums in this model having titles belonging to a given genre and artist
   * @param genreName String  name of the genre albums are searched for
   * @param artistName String  name of the artist albums are searched for
   * @return SortListModel
  public SortListModel listAlbums(String genreName, String artistName) {
    SortListModel albums = new SortListModel();
    albums.add(FILTER_ALL);
    Iterator e = data.iterator();
    while (e.hasNext()) {
      ID3v11Tag tag = ((AudioFileDescriptor) e.next()).getID3v11Tag();
      String albumName = tag.getAlbum();
      String genre = tag.getGenreName();
      String artist = tag.getArtist();
      if(genreName == null || genreName.equalsIgnoreCase(FILTER_ALL)) {
        if (albums.indexOf(albumName) < 0 &&
            artist.equalsIgnoreCase(artistName))
          albums.add(albumName);
      else {
        if (albums.indexOf(albumName) < 0 &&
            genre.equalsIgnoreCase(genreName) &&
            artist.equalsIgnoreCase(artistName))
          albums.add(albumName);
    albums.sort();
    return albums;
   * get the number of audio tracks stored in this data model
   * @return int  the number of tracks
  public int getTrackCount() {
    return data.size();
  /** constant to select all items of a given part */
  public static final String FILTER_ALL = "    all";
}...and here the changed CollectionThread now caching found File objects in a vector
* Light Development Playlist Editor
* Copyright (C) 2004 Ulrich Hilger
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
package com.lightdev.app.playlisteditor.data;
import com.lightdev.lib.util.InfoThread;
import java.io.File;
import java.util.Vector;
import java.util.Enumeration;
* A class to collect audio data from a given storage location.
* <p>
* <code>CollectionThread</code> uses ID3 tag information to gain data.
* </p>
* <p>See <a href="http://www.id3.org">http://www.id3.org</a> for details about
* ID3 tags.</p>
* @author Ulrich Hilger
* @author Light Development
* @author <a href="http://www.lightdev.com">http://www.lightdev.com</a>
* @author <a href="mailto:[email protected]">[email protected]</a>
* @author published under the terms and conditions of the
*      GNU General Public License,
*      for details see file gpl.txt in the distribution
*      package of this software as well as any licensing notes
*      inside this documentation
* @version 1, October 13, 2004
public class CollectionThread extends InfoThread {
   * constructor
   * @param model  AudioDataModel  the data model to collect data to
  public CollectionThread(AudioDataModel model) {
    this.model = model;
   * constructor, creates a new empty AudioDataModel
  public CollectionThread() {
    this(new AudioDataModel());
   * set the data model to collect data to
   * @param model AudioDataModel  the model to collect data to
  public void setModel(AudioDataModel model) {
    this.model = model;
   * get the data model associated to this thread
   * @return AudioDataModel  the data model
  public AudioDataModel getModel() {
    return model;
   * set the directory to collect data from
   * @param rootDir File  the directory to collect data from
  public void setRootDirectory(File rootDir) {
    this.rootDir = rootDir;
   * this is the method to prepare a thread to run.
  protected void prepareThread() {
    maxValue = -1;
    filesProcessed = 0;
    innerCount = 0;
    fileList = new Vector();
   * do the actual work of this thread, i.e. iterate through a given directory
   * structure and collect audio data
   * @return boolean  true, if work is left
  protected boolean work() {
    boolean workIsLeft = true;
    if(getStatus() < STATUS_HALT_PENDING) {
      countElements(rootDir.listFiles());
    if(getStatus() < STATUS_HALT_PENDING) {
      workIsLeft = collect(); //collect(rootDir.listFiles());
      fileList.clear();
      fileList = null;
    return workIsLeft;
   * count the elements in a given file array including its subdirectories
   * @param files File[]
  private void countElements(File[] files) {
    int i = 0;
    while (i < files.length && getStatus() < STATUS_HALT_PENDING) {
      File file = files;
if (file.isDirectory()) {
countElements(file.listFiles());
else {
fileList.add(file);
i++;
maxValue++;
* read data into model
* @param files File[] the file array representing the content of a given directory
* @return boolean true, if work is left
private boolean collect(/*File[] files*/) {
Enumeration files = fileList.elements();
while(files.hasMoreElements() && getStatus() < STATUS_HALT_PENDING) {
File file = (File) files.nextElement();
try {
model.addTrack(file);
catch(Exception e) {
fireThreadException(e);
filesProcessed++;
if(++innerCount > 99) {
innerCount = 0;
fireThreadProgress(filesProcessed);
return false;
int i = 0;
while(i < files.length && getStatus() < STATUS_HALT_PENDING) {
File file = files[i];
if(file.isDirectory()) {
collect(file.listFiles());
else if(file.getName().toLowerCase().endsWith("mp3")) {
try {
model.addTrack(file);
catch(Exception e) {
fireThreadException(e);
i++;
filesProcessed++;
fireThreadProgress(filesProcessed);
return (i<files.length);
/** the directory to collect data from */
private File rootDir;
/** the data model to collect data to */
private AudioDataModel model;
/** the number of files this thread processed so far while it is running */
private long filesProcessed = 0;
/** a list to temporary store found files */
private Vector fileList;
/** counter to determine when to fire progress messages */
private int innerCount = 0;

Similar Messages

  • Viravan....I NEED YOUR HELP!...Please?

    Just trying to get your attention as I saw you just posted. Can you help me? In this link, you posted this:
    http://forum.java.sun.com/thread.jsp?forum=57&thread=267060&tstart=0&trange=15
    If you don't want to have to fool around with the HyperlinkListener, >just add the normal <BASE> tag to your HTML file. The <BASE> tag has >the following syntax:
    <BASE HREF="baseURL" TARGET="WindowName" >
    The TARGET portion is optional!
    Theoretically, the JEditorPane should be smart enough to look for the >link from the same place where the original HTML file is loaded from >but apparently there is a bug somewhere that prevents it from doing >that.What baseURL do you speak of?

    Thanks again for your help. Here runnable example that consists of three classes:
    1) Applet
    2) Dialog
    3) JEditorPane
    ...and at the bottom the HTML file. Should be easy to run it and check it out. I tried adding the BASE tag within the html, but it did not work.
    Thanks!
    public class TestApplet extends javax.swing.JApplet {
      public void start() {
        TestDialog testDialog = new TestDialog();
    public class TestDialog extends javax.swing.JDialog {
      public TestDialog() {
        this.setSize(250,250);
        TestEditor testEditor = new TestEditor();
        javax.swing.JScrollPane testScroll = new javax.swing.JScrollPane(testEditor);
        getContentPane().add(testScroll);
        show();
    public class TestEditor extends javax.swing.JEditorPane {
      public TestEditor() {
        this.setEditable(false);
        this.setContentType("text/html");
        HTMLListener htmlListener = new HTMLListener();
        this.addHyperlinkListener(htmlListener);
        this.setText("<HTML>"
            + "<TITLE>This is a test</TITLE>"
            + "<H2>Paragraph 1</H2>"
            + "<A HREF='#Para2'>Click here to go to Paragraph 2</A>"
            + "<P>Here is text for paragraph 1</P>"
            + "<P>Here is text for paragraph 1</P>"
            + "<P>Here is text for paragraph 1</P>"
            + "<P>Here is text for paragraph 1</P>"
            + "<P>Here is text for paragraph 1</P>"
            + "<A NAME='Para2'>"
            + "<H2>Paragraph 2</H2>"
            + "<P>Here is text for paragraph 2</P>"
            + "</HTML>");
      private class HTMLListener implements javax.swing.event.HyperlinkListener {
        public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent hyper) {
          if(hyper.getEventType() == javax.swing.event.HyperlinkEvent.EventType.ACTIVATED)
            System.out.println("Clicked on a hyperlink");
    <HTML>
      <BODY>
        <APPLET codebase = .
        code = TestApplet.class
        width=250, height=250>
        </APPLET>
      </BODY>
    </HTML>

  • Need help with premiere pro cs6 having performance issues please help

    need help with premiere pro cs6 having performance issues please help

    Welcome to the forum.
    First thing that I would do would be to look at this Adobe KB Article to see if it helps.
    Next, I would try the tips in this ARTICLE.
    If that does not help, a Repair Install would definitely be in order.
    Good luck,
    Hunt

  • Hi, my iphone its in recovery mode and when i restore my iphone 5s loading show the blue screen and show note on itunes (unknown error 14) please i need your help please . thanks

    Hi, my iphone its in recovery mode and when i restore my iphone 5s loading show the blue screen and show note on itunes (unknown error 14) please i need your help please . thanks

    In the article Resolve iOS update and restore errors this is what it says about error 14:
    Check your USB connections
    Related errors: 13, 14, 1600, 1601, 1602, 1603, 1604, 1611, 1643-1650, 2000, 2001, 2002, 2005, 2006, 2009, 4005, 4013, 4014, or “invalid response."
    If the USB connection between your device and computer is interrupted, you may be unable to update or restore.
    To narrow down the issue, you can also change up your hardware:
    Use the USB cable that came with your device, or a different Apple USB cable.
    Plug your cable into a different USB port directly on your computer. Don't plug it into your keyboard.
    Try a different computer.
    If necessary, resolve any further issues with the USB connection, then with your security software.
    If you're still seeing the error message, check for hardware issues by following the next section.

  • HT201210 please,I need your help ! I was updating my iphone ios to ios4.2 and then problems begins when it shows that it needs to restore the factory software to I was trying to restore ,but that didn't happen it begins but then it shows unknown error 101

    please,I need your help ! I was updating my iphone ios to ios4.2 and then problems begins when it shows that it needs to restore the factory software to I was trying to restore ,but that didn't happen it begins restoring but then it shows unknown error 1015

    Stop being impatient.
    From the article that the question was posted from:
    Errors related to downgrading iOS
    The required resource cannot be found: This alert message occurs when your device has a newer version of iOS than what is available in iTunes. When troubleshooting a device that presents this alert message, go to Settings > General > About and check the version of iOS on the device. If it is newer than the latest released iOS version, the device may have a prerelease developer version of iOS installed.   Installing an older version of iOS over a newer version is not supported.
    Error 1015: This error is typically caused by attempts to downgrade the iPhone, iPad, or iPod touch's software. This can occur when you attempt to restore using an older .ipsw file. Downgrading to a previous version is not supported. To resolve this issue, attempt to restore with the latest iPhone, iPad, or iPod touch software available from Apple. This error can also occur when an unauthorized modification of the iOS has occurred and you are now trying to restore to an authorized, default state.
    You cannot downgrade.
    If you have a 3GS, you can only install iOS 6.1.3 which is the current version of iOS for the device.

  • I want to get iBook, Facebook and Skype to my iphone 4.2.1 through my iTune, but I coudn't because it is said that it requires a newer version of iOS. Please I need your help. Thanks

    I want to get iBook, Facebook and Skype to my iphone 4.2.1 through my iTune, but I coudn't because it is said that it requires a newer version of iOS. Please I need your help. Thanks

    If your iPhone can't be updated to a higher iOS version then the only way to get them is if you downloaded versions of them which were compatible with iOS 4.2.1 and you still have copies of those versions somewhere e.g. on your computer or on a backup - only the current version of each app is available in the store, and as apps (and other content) are tied to the account that downloads them, you will need to have older copies that are linked to your id

  • I have a big problem, please I need your help

    Hi I was typing a message to send and my laptop off the sending page, and I received a message from Hp allowing me to stop my machine because on a system error. after five minutes I try to re-start my laptop but no way! How could I do as it refuse to start? my laptop is Hp pavillon Entertainment PC) AMD AthlonX2 64 I need your help please very soon

    I'm not suggesting anything. Your options are:
    Start over. It'll take anywhere between a few days and a few months depending on your CD collection
    Go to a CD ripping agency. It'll take a day or two, and they charge about a buck or two a CD.
    Go to a data recovery agency. They charge a few hundred dollars an hour.

  • HT1199 I need your help, PLEASE. How can to fix "NO MOUNTABLE FILE SYSTEM" error of my back up hard drive on Mountain Lion OS?

    I need your help, PLEASE. How can to fix "NO MOUNTABLE FILE SYSTEM" error of my back up hard drive on Mountain Lion OS?

    Did you format the drive for Mac use before you tried to use it as a backup drive?
    Are you using Time Machine on the drive? You can't view the contents of its backup database and the only way to access the info is directly from the Time Machine app.

  • I need your help, please. I can't get my photostream synchronized

    Dear friends, I need your help again!!!
    My photostream from my computer, windows vista, is not updating the pictures on my photostream in neither one of my IOS devices.
    I'm sure that the photostream in both IOS are turned on. In my computer it is also turned on.
    For example, I tranferred some pictures from a normal file to the photostream in the computer and I expected that them went also to my
    iphone and ipad, but it not occurred.
    Please, do you have some advise for me?
    Thanks in advance.

    first i would try a simple restart of your computer and your iPad and see if they show up after they reboot. Also which folder are you putting them in? on windows there will be a seperate folder in the photostream folder that will show upload/uploads you will want to make sure they are in there. Also here are some basics about photostream to make sure you are meeting all the requirements and are not over your limit, http://support.apple.com/kb/HT4486

  • Help please am useing an Iphone 3gs after i restore the iOS device restart my phone can not Activate it.. what do i do please i need your help.?

    Help please am useing an Iphone 3gs after i restore the iOS device restart my phone can not Activate it.. what do i do please i need your help.?

    Usually indicitive of a phone that's been jailbroken or hacked to unlock it, something of which you will net get support for here.

  • Please , i need youre help ! im from Mexico and i dont speak inglish well but ill try explain me... i buy a cs5 students edicion but i lost my paswoord for the instalacion can you helpe me ? how can i recuperade my paswoord

    please , i need youre help ! im from Mexico and i dont speak inglish well but ill try explain me... i buy a cs5 students edicion but i lost my paswoord for the instalacion can you helpe me ? how can i recuperade my paswoord
    Creative Suites

    Find your serial number quickly
    Mylenium

  • HI ALL SINCE TWO DAYS I AM DOWNLOADING VIBER BUT I AM NOT HAVING MY ACCESS CODE AND EVERY TIME I DELETE THE APPLICATION AND DOWNLOADING IT AGAIN BUT ALWAYS THE SAME RESULT PLEASE I NEED YOUR HELP FOR THE ACCESS CODE.MY PHONE NUMBER IS 0022996969896.THANKS

    HI ALL SINCE TWO DAYS I AM DOWNLOADING VIBER BUT I AM NOT HAVING MY ACCESS CODE AND EVERY TIME I DELETE THE APPLICATION AND DOWNLOADING IT AGAIN BUT ALWAYS THE SAME RESULT PLEASE I NEED YOUR HELP FOR THE ACCESS CODE.MY PHONE NUMBER IS 0022996969896.THANKS IN ADVANCE

    try this website this should help you http://helpme.viber.com/index.php?/Knowledgebase/List/Index/1/iphone

  • HT201328 Hey, i bought an iphone from online shop and its locked by orange france, i contact them to unlock it but they refused, they said that we regret to inform you that we'r not able to unlock second hand phones? I need your help please.

    Hey, i bought an iphone from online shop as a used phone and its locked by orange france, i contact them to unlock it but they refused, they said that we regret to inform you that we'r not able to unlock second hand phones? I need your help please. Its not fair , apple should figure it out
    Regards,
    Orange

    This is no different with any carrier locked phone. Getting a carrier locked phone officially unlocked is the responsibility of the carrier, not the cell phone manufacturer. A cell phone manufacture cannot unlock a carrier locked phone without the carrier's authorization.
    An iPhone sold as officially unlocked when new can be used by others as a second hand phone, and the same with any carrier locked iPhone that can be unlocked by the carrier, and many carriers offer it.

  • HT4623 I. Tried many time to install my apple to update software but can't fix I need your help please and Thanks.

    How i fix and software update i was tried but cant i need your help please and thanks.

    "but cant"
    That doesnt tell us anything useful. You need to post EXACTLY what you did and EXACTLY what happened, including any error messages.

  • HT4097 please my ipad in recovery mode after last update and i tried the previous steps and it is same condition in recovery mode please i need your help

    please i need your help i made update to my ipad to the last version then i find it in recovery mode and tried to restore it using i tunes but it the same in recovery mode please i need your help to solve this problem

    If you followed these instructions and you were unable to enter recovery mode, I'm still leaning toward a hardware problem.  Also, since you have IOS-7, read this.  It might help.

Maybe you are looking for

  • Windows 7 Bootcamp problem?

    Hello people, Let me start from the beginning. I have been trying to make a bootcamp partition on my iMac mid 2007 to run windows 7 on. This has been a very bumpy road so far and now I'm stuck at a bump. So far, this is what all I have done: 1. Use b

  • Error in Query transports

    Hi experts, I have face an error stating that "R3TRELEM3U9HDF8LLE8RUUZZK035MNT3B original object cannot be replaced" while transporting a query from One BW Dev to Other BW Dev system. I also have ckecked this element is a reusable Variable element an

  • 10.6.8 update - currupted my finder - mac pro

    Hi update from 10.67 to 10.6.8 has caused finder to not launch the window that shows device places recent docs etc also context menu is currupted with names like N31,N68, BN50, LB1 and N220 etc etc etc , clicking on about mac returns nothing and I ca

  • Follow on Document not created for the Purchase Request.

    I can able to create a purchase request for the  material with quantiy equal to  or more than 16. If I create a purchase request for the same material with quantity less than 16., Follow-on Document not getting created. I checked the transaction BBP_

  • Tracks in Album show up as separate albums

    Some of my albums in iTunes show up as seperate albums (with same name).. this is most noticeable when looked at on iPhone.  How do I get this re-grouped so on iPhone I can listen to whole album and not have to play each track seperatly?   And withou