sysperfana/perfinvestigator/com.nokia.carbide.cpp.pi/src/com/nokia/carbide/cpp/internal/pi/model/TraceDataContainer.java
changeset 2 b9ab3b238396
equal deleted inserted replaced
1:1050670c6980 2:b9ab3b238396
       
     1 /*
       
     2  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of the License "Eclipse Public License v1.0"
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description: 
       
    15  *
       
    16  */
       
    17 
       
    18 package com.nokia.carbide.cpp.internal.pi.model;
       
    19 
       
    20 import java.util.ArrayList;
       
    21 import java.util.Hashtable;
       
    22 import java.util.Iterator;
       
    23 
       
    24 public class TraceDataContainer 
       
    25 {
       
    26 	private Hashtable columns;
       
    27 	private String name;
       
    28 	
       
    29 	private static class InternalColumn
       
    30 	{		
       
    31 		ArrayList columnData;
       
    32 
       
    33 		InternalColumn(String columnName)
       
    34 		{
       
    35 			columnData = new ArrayList();
       
    36 		}
       
    37 	}
       
    38 	
       
    39 	public TraceDataContainer(String containerName, String[] initialColumnNames)
       
    40 	{
       
    41 		this.name = containerName;
       
    42 		this.columns = new Hashtable();
       
    43 		for (int i = 0; i < initialColumnNames.length; i++)
       
    44 		{
       
    45 			InternalColumn c = new InternalColumn(initialColumnNames[i]);
       
    46 			this.columns.put(initialColumnNames[i], c);
       
    47 		}
       
    48 	}
       
    49 	
       
    50 	public String getName()
       
    51 	{
       
    52 		return name;
       
    53 	}
       
    54 	
       
    55 	public void addDataToColumn(String columnName, Object data)
       
    56 	{
       
    57 		InternalColumn ic = (InternalColumn)this.columns.get(columnName);
       
    58 		
       
    59 		if (ic == null)
       
    60 			throw new NullPointerException(Messages.getString("TraceDataContainer.columnNotFound1") + columnName + Messages.getString("TraceDataContainer.columnNotFound2")); //$NON-NLS-1$ //$NON-NLS-2$
       
    61 		ic.columnData.add(data);
       
    62 	}
       
    63 	
       
    64 	public Iterator getColumn(String columnName)
       
    65 	{
       
    66 		InternalColumn ic = (InternalColumn)this.columns.get(columnName);
       
    67 		
       
    68 		if (ic == null) throw new NullPointerException(Messages.getString("TraceDataContainer.columnNotFound1") + columnName + Messages.getString("TraceDataContainer.columnNotFound2")); //$NON-NLS-1$ //$NON-NLS-2$
       
    69 		
       
    70 		return ((InternalColumn)this.columns.get(columnName)).columnData.iterator();
       
    71 	}
       
    72 	
       
    73 	private ArrayList getColumnInternal(String columnName)
       
    74 	{
       
    75 		InternalColumn ic = (InternalColumn)this.columns.get(columnName);
       
    76 		
       
    77 		if (ic == null)
       
    78 			throw new NullPointerException(Messages.getString("TraceDataContainer.columnNotFound1") + columnName + Messages.getString("TraceDataContainer.columnNotFound2")); //$NON-NLS-1$ //$NON-NLS-2$
       
    79 		
       
    80 		return ((InternalColumn)this.columns.get(columnName)).columnData;		
       
    81 	}
       
    82 	
       
    83 	public ArrayList getColumnMatch(String knownColumn, String searchedColumn, Object knownObject)
       
    84 	{
       
    85 		ArrayList c1 = this.getColumnInternal(knownColumn);
       
    86 		ArrayList c2 = this.getColumnInternal(searchedColumn);
       
    87 		
       
    88 		ArrayList found = new ArrayList();
       
    89 		
       
    90 		for (int i = 0; i < c1.size(); i++)
       
    91 		{
       
    92 			 Object o = c1.get(i);
       
    93 			 if (o.equals(knownObject))
       
    94 			 {
       
    95 				 if (i < c2.size())
       
    96 				 {
       
    97 					 found.add(c2.get(i));
       
    98 				 }
       
    99 			 }
       
   100 		}
       
   101 		return found;
       
   102 	}
       
   103 	
       
   104 	public static void main(String[] a)
       
   105 	{
       
   106 		TraceDataContainer t = new TraceDataContainer("taulukko",new String[]{"nimi","puh","osoite"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
       
   107 		t.addDataToColumn("nimi","teemu"); //$NON-NLS-1$ //$NON-NLS-2$
       
   108 		t.addDataToColumn("nimi","kaapo"); //$NON-NLS-1$ //$NON-NLS-2$
       
   109 		t.addDataToColumn("nimi","erkki"); //$NON-NLS-1$ //$NON-NLS-2$
       
   110 		t.addDataToColumn("nimi","kaapo"); //$NON-NLS-1$ //$NON-NLS-2$
       
   111 		t.addDataToColumn("nimi","teemu"); //$NON-NLS-1$ //$NON-NLS-2$
       
   112 		
       
   113 		t.addDataToColumn("puh","1"); //$NON-NLS-1$ //$NON-NLS-2$
       
   114 		t.addDataToColumn("puh","2"); //$NON-NLS-1$ //$NON-NLS-2$
       
   115 		t.addDataToColumn("puh","3"); //$NON-NLS-1$ //$NON-NLS-2$
       
   116 		t.addDataToColumn("puh","4"); //$NON-NLS-1$ //$NON-NLS-2$
       
   117 		t.addDataToColumn("puh","24398243987"); //$NON-NLS-1$ //$NON-NLS-2$
       
   118 
       
   119 		t.addDataToColumn("osoite","tie 1"); //$NON-NLS-1$ //$NON-NLS-2$
       
   120 		t.addDataToColumn("osoite","tie 2"); //$NON-NLS-1$ //$NON-NLS-2$
       
   121 		t.addDataToColumn("osoite","tie 3"); //$NON-NLS-1$ //$NON-NLS-2$
       
   122 		t.addDataToColumn("osoite","tie 4"); //$NON-NLS-1$ //$NON-NLS-2$
       
   123 		t.addDataToColumn("osoite","tie 243982473987"); //$NON-NLS-1$ //$NON-NLS-2$
       
   124 
       
   125 		
       
   126 		ArrayList al = t.getColumnMatch("nimi","osoite","teemu");		 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
       
   127 		Iterator i = al.iterator();
       
   128 		while(i.hasNext())
       
   129 		{
       
   130 			System.out.println((String)i.next());
       
   131 		}
       
   132 			
       
   133 	}
       
   134 	
       
   135 	
       
   136 }