Recursively Adding to Multiple Files / Directory in Clearcase

Since last few months, I am working on Clearcase (UCM one) .  My project was in SVP phase.  As usual, we were running out of time.  Deadline followed by another deadline. Commitment always overrun and are being suger coated to client.  As per working model, task were assigned to offshore colleague. offshore team mate made mistakes while check in files into wrong directory.  Things went very bad and went to escalation.  It was time to rely on computers and not on human beings.  I decided to have a neat way of recursively adding a complete folder or directory to Clearcase’s source control. There is no rocket science here. It needs little bit of Google and got few very good tips.

It uses the clearfsimport command, which is intended to be used by the vob owner or a privileged user [ if you come here, you dont need to worry about vob owner 🙂 ] to import a copy of a directory tree.

By default, clearfsimport sets the time stamp of the new elements to that of the source objects (which is why the command requires privileged access), but if you use the -nsetevent flag, Clearcase won’t do anything special with the time stamps, and consequently, you can run it as a normal user.

I am sure,  above will not make more sense and you are eager to see how things are done.

For this example, I’m going to import the folder[From]  /tmp/Final-Config and all of its contents into the vob [To]  /vobs/demo.

A: Set to View

B: Set an activity.
Step1:  Check out the folder/directory that you want to import the directory tree into (which in my case is /vobs/demo):

Command to type : ct co /vobs/demo
Step 2:. Create the Final-Config  folder in /vobs/demo:

Command to type : ct mkdir /vobs/demo/Final-Config
Step 3. Before we actually import all of the files, you can preview exactly what clearfsimport is going to import when you execute it. To do that, you need to use the -preview flag:

Command to type :  clearfsimport -preview -rec -nsetevent /tmp/Final-Config/*  /vobs/demo/Final-Config

-rec makes clearfsimport search the specified source path recursively

-nsetevent allows a normal user to run the command, as discussed earlier.


Step 4: If you’re sure that you want to import all of the listed files, simply remove the -preview flag, and execute the command:

Command to type :  clearfsimport -rec -nsetevent /tmp/Final-Config/* /vobs/demo/Final-Config

This can take quite a while depending on the speed of your connection to the Clearcase repository, but it will do it all automatically without any interrupts required.


Step 5: Check in the /vobs/demo/Final-Config  directory, if necessary, and the /vobs/demo directory.

Command to type :

ct ci /vobs/demo/Final-Config

cd ..

ct ci /vobs/demo

Hope above will help you.


Difference between Set, List and Map in Java

Hi All

Its been a long time since I have post on my blog.  There were many thoughts going on on what I need to publish. Should I go for Java or Tech stuff or something new. After having few thoughts, I decided to stick to Java. However, this time, I am planning to post more on Clearcase, Unix and How big organization plans and executes their program.

Let me start with Java: A simple question which can confuse many experienced persons.  It goes like this.

What is Difference between Set, List and Map in Java? [this post will be followed by Comparator or Comparable]

Set, List and Map are three important Interface of Java collection framework. What are the key differences between Set, List and Map in Java is one of the most frequently asked question for Java Collection.

Some time this question is asked as When to use List, Set and Map in Java. Clearly, interviewer is looking to know that whether you are familiar with fundamentals of Java collection framework or not. Please mind that having understanding of any Framework plays a crucial role.

In order to decide when to use List, Set or Map , you need to know what are these interfaces and what functionality they provide.  Lets have a quick look.

1 : (Duplicate) List in Java provides ordered and indexed collection which may contain duplicates. Example:  LinkedList and ArrayList are two most popular used List implementation

2:  (Unique) Set provides an unordered collection of unique objects, i.e. Set doesn’t allow duplicates. Example: LinkedHashSet, TreeSet and HashSet are frequently used Set implementation.

3:  (Duplicate Value – Unique Keys) Map provides a data structure based on key value pair and hashing.

As I said Set, List and Map are interfaces, which defines core contract e.g. a Set contract says that it can not contain duplicates. Based upon our knowledge of List, Set and Map let’s compare them on different metrics.

Duplicate Objects
Main difference between List and Set interface in Java is that List allows duplicates while Set doesn’t allow duplicates. All implementation of Set honor this contract. Map  holds two object per Entry e.g. key and value and It may contain duplicate values but keys are always unique.
Another key difference between List and Set is that List is an ordered collection, List’s contract maintains insertion order orelement. Set is an unordered collection, you get no guarantee on which order element will be stored. Though some of the Set implementation e.g. LinkedHashSet maintains order. Also SortedSet and SortedMap e.g. TreeSet and TreeMap maintains a sorting order, imposed by using Comparator or Comparable.
Null elements
List allows null elements and you can have many null objects in a List, because it also allowed duplicates. Set just allow one null element as there is no duplicate permitted while in Map you can have null values and at most one null key. worth noting is thatHashtable doesn’t allow null key or values but HashMap allows null values and one null keys.  This is also the main difference between these two popular implementation of Map interface, aka HashMap vs Hashtable
Popular implementation
List – ArrayList, LinkedList and Vector
Set – HashSet, TreeSet and LinkedHashSet
Map – HashMap, Hashtable and TreeMap


When to use List, Set and Map in Java
Based upon our understanding of difference between Set, List and Map we can now decide when to use List, Set or Map in Java.
1) If you need to access elements frequently by using index, than List is a way to go. Its implementation e.g. ArrayList provides faster access if you know index.
2) If you want to store elements and want them to maintain an order on which they are inserted into collection then go for List again, as List is an ordered collection and maintain insertion order.
3) If you want to create collection of unique elements and don’t want any duplicate than choose any Set implementation e.g.HashSet, LinkedHashSet or TreeSet. All Set implementation follow there general contract e.g. uniqueness but also add addition feature e.g. TreeSet is a SortedSet and elements stored on TreeSet can be sorted by using Comparator or Comparable in Java. LinkedHashSet also maintains insertion order.
4) If you store data in form of key and value than Map is the way to go. You can choose from Hashtable, HashMap, TreeMap based upon your subsequent need. In order to choose between first two see difference between HashSet and HashMap in Java.
That’s all on difference between Set, List and Map in Java. All three are most fundamental interface of Java Collection framework and any Java developer should know there distinguish feature and given a situation should be able to pick right Collection class to use. It’s also good to remember difference between there implementation e.g. When to use ArrayList and LinkedList , HashMap vs Hashtable  or When to use Vector or ArrayList etc. Collection API is huge and it’s difficult to know every bits and piece but at same time there is no excuse for not knowing fundamentals like Difference between Set, List and Map in Java