File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Java in General and the fly likes Comparing Consecutive versions Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCA/OCP Java SE 7 Programmer I & II Study Guide this week in the OCPJP forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Comparing Consecutive versions" Watch "Comparing Consecutive versions" New topic
Author

Comparing Consecutive versions

Shine Tom
Greenhorn

Joined: Sep 17, 2012
Posts: 19
Hello Everyone,
has anyone come across the need to compare the versions of a file and see if they are consecutive?
eg: Rev 1.1 <-> Rev 1.2 =>true
Rev 1.2 <-> Rev 1.3 =>true
Rev 1.3 <-> Rev 1.4 =>true
Rev 1.3 <-> Rev branch 1.3.1.1 =>true
Rev 1.3.1.1 <-> Rev 1.3.1.2 =>true
Rev 1.1<-> Rev 1.4 => false
Rev 1.2.1.2 <-> Rev 1.2.1.2.1.1 =>true

i was thinking to tokenize the string containing the version number with '.' as delimiter and then comparing each each digit to see if they are consecutive versions.

what do you think??
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11441
    
  16

does that work if you get to:

Rev 1.9 <-> 1.10

And what about

1.2 <-> 1.3.1

I think the first thing you need to do is nail down how versions are numbered. Can a number be skipped, i.e. you have a 1.1 and a 1.3, but not a 1.2?

are you guaranteed to have a 1.3 before you have a 1.3.1?

Then you need to look at things and forget about java, but write down in English (or French, or German or whatever) how exactly YOU would do it without a computer.

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Shine Tom
Greenhorn

Joined: Sep 17, 2012
Posts: 19
Rev 1.9 <-> 1.10
Should return true

1.2 <-> 1.3.1
returns false.

it should return true only when the versions are consecutive.
Can a number be skipped, i.e. you have a 1.1 and a 1.3, but not a 1.2?

are you guaranteed to have a 1.3 before you have a 1.3.1?
: My understanding was versioning is done in a series, not that one version of the file is 1.2 and then comes 1.4.
Correct me if I am wrong.
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11441
    
  16

My understanding was versioning is done in a series, not that one version of the file is 1.2 and then comes 1.4. Correct me if I am wrong.

How are we supposed to do that? it is YOUR data. We don't know what it does or how it is generated. Part of being a programmer is analyzing your data set and finding out what can and can't be done. You are free to assume that versions will be sequential, but you should realize that you are making that assumption - and I would suggest you document all your assumptions.


Yes, I know that. But does the algorithm you describe handle it? You specifically say "compar(e) each each digit to see if they are consecutive versions". does that mean you are going to compare the 9 and the 1 - as those are digits? What do you do with the '0'?

or are you going to compare the TOKENS - i.e. "9" and "10"?

Can versions be lettered - i.e. version 1.4A, 1.4B, etc? If you assume they will not be, then that is another assumption to document.

Are you guaranteed that there can't be a 1.9.1 made after 1.10 (another assumption here...) Many companies will support two versions and will make new releases of older products. Maybe you don't care for this particular task.

My larger point is that there is usually a LOT of thinking that has to go on before you ever consider writing a line of code. I'm asking these questions to get you to think about all this, and possibly come up with other ideas.
Tony Docherty
Bartender

Joined: Aug 07, 2007
Posts: 2332
    
  50
1.2.1.2 <-> Rev 1.2.1.2.1.1 =>true

Is that really consecutive? Surely it should be:
1.2.1.2 <-> Rev 1.2.1.2.1
1.2.1.2.1 <-> Rev 1.2.1.2.1.1

I suggest you do as Fred has said. Specifying the exact rules is the key to coding this correctly.
Shine Tom
Greenhorn

Joined: Sep 17, 2012
Posts: 19
Thanks Fred and Tony.. I will do my homewok and get that clear and get back.
Shine Tom
Greenhorn

Joined: Sep 17, 2012
Posts: 19
Hi Everyone,

I m so sorry for the late reply.. was sick and bedridden. Coming back to the thread..

Can versions be lettered
--> No
Are you guaranteed that there can't be a 1.9.1 made after 1.10 (
-> 1.9.1.1 can be made after 1.10 but when doing comparison, it is not needed to be compared. 1.10 will b e compared aganist 1.9 and 1.9.1.1 aganist 1.9.

I have attached the Versioning Structure.

Shine


[Thumbnail for Unbenannt.jpg]

Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8043
    
  22

Shine Tom wrote:1.9.1.1 can be made after 1.10 but when doing comparison, it is not needed to be compared. 1.10 will b e compared aganist 1.9 and 1.9.1.1 aganist 1.9.

Yes, but that doesn't help us. What we need to know is HOW you want these comparisons done...exactly; and your examples are not conclusive.
For example, you cited:
Rev 1.3 <-> Rev 1.4 =>true
and
Rev 1.3 <-> Rev branch 1.3.1.1 =>true

What about:
Rev 1.3 <-> Rev branch 1.3.1
?
Or indeed:
Rev 1.3 <-> Rev 1.5
if there is NO Rev 1.4 ?

I have attached the Versioning Structure.

That's a help, but it doesn't answer all the questions you're going to need answered - particularly the ones Fred came up with.

The answers to those things are going to have a large bearing on how you go about your "consecutive" check, so you need to get ALL the rules written down before you write a single line of Java code.

And quite honestly, your problem is NOT going to be comparing increasing branch lengths; it's going to be decreasing ones. For example, from your diagram, I'd assume that:
Rev branch 1.2.1.2.1.1 <-> Rev branch 1.2.1.3
is true (and vice-versa); and that is going to be quite difficult to program without some master table of valid versions.

Winston


Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
Tony Docherty
Bartender

Joined: Aug 07, 2007
Posts: 2332
    
  50
Some years ago I wrote some code for comparing 2 version numbers where the version numbers were dot separated numerical values ie the same basic format as your values. The code I wrote will not do what you want because it was just for sorting version numbers into ascending order but part of the solution was to convert the version number as a dot separated string into an array of ints. Once you have an array of ints for each version number it is relatively easy to compare the array elements numerically to see if they are consecutive etc. The reason I'm telling you this is so you don't get hung up on "how am I going to write the code to do ...", the code is simple but you can only start to write it when you a set of rules for every situation.
Shine Tom
Greenhorn

Joined: Sep 17, 2012
Posts: 19
I was again sick.i m really sorry.

Rev branch 1.2.1.2.1.1 <-> Rev branch 1.2.1.3
is true (and vice-versa); and that is going to be quite difficult to program without some master table of valid versions.
true. I would need to implement 'something' to do that.
What about:
Rev 1.3 <-> Rev branch 1.3.1
: this versioning system doesnt have a version like 1.3.1.
1.3.1 will be considered as the base for 1.3.1.1

Rev 1.3 <-> Rev 1.5 if there is NO Rev 1.4 ?
: can this happen that a version is not there??
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11441
    
  16

Shine Tom wrote:I was again sick.i m really sorry.

No worries. We're happy to help whenever you need it.
Shine Tom wrote:
Rev 1.3 <-> Rev 1.5 if there is NO Rev 1.4 ?
: can this happen that a version is not there??

Why are you asking us? This is your problem. You know what the rules are - not us. We can guess or makes assumptions, but we really have no way to know what your situation is. If you don't know, then you need to ask someone who does.

Where did this problem come from? Is it homework? Is it something you just made up? Is it for work? If it is any of those, then go to the person who gave it to you and ask them (teacher, yourself, your boss).

The hardest part of writing code is nailing down the specs.
Shine Tom
Greenhorn

Joined: Sep 17, 2012
Posts: 19
Thanks Fred for replying
Rev 1.3 <-> Rev 1.5 if there is NO Rev 1.4 ?
:> i'll get it cleared. the people in charge have already left..
 
 
subject: Comparing Consecutive versions