ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Gibble" <cgib...@excite.com>
Subject Re: Selectively copying versions of files
Date Tue, 07 Nov 2006 18:14:03 GMT

I've read up on selectors, and you're right -- they do the job, at least on a file-by-file
basis.  But this doesn't really do what I want.  Consider:

  For personnel:
      -- if there is a day-specific file (day1_personnel.xml), use it.
      -- else if there is a default file (personnel.xml), use it

  For locations:
      -- if there is a coast-specific file (EastCoast_locations.xml), use it.
      -- else if there is a default file (locations.xml), use it

... and so on.  Note that selectors are specific for each file.  So if I add a FOURTH data
file (say, forklifts.xml), I'd basically have to copy and paste existing selectors (if they
vary on the same parameter, like "days") or write new selectors (if they vary on a new parameter,
like "diesel vs. electric") to account for the possible configurations.

Ideally the selectors would NOT be file-specific, but then the number of possible configurations
seem to grow tremendously:

  For ANY input file:
      -- if there is a file that is configuration-specific, (NewYearsDay2006_vehicles.xml),
use it.
      -- else if there is a file that is day-specific, location-specific, and vehicle-specific
(day1_EastCoast_25_vehicles.xml), use it.
      -- else if there is a file that is day-specific and vehicle-specific (day1_25vehicle_locations.xml),
use it.
      -- else if there is a file that is location-specific and vehicle-specific (EastCoast_25vehicle_personnel.xml),
use it.
      -- else if...... [repeat for all combinations of day, location, and vehicle number]


Now, if my new forklift.xml varies based on a new parameter "diesel vs. electric", then the
number of combinations (and selectors) just doubled.  Not sure how this does performance-wise,
but I'm sure it doesn't help....

Again, this may be unavoidable.  And my approach of encoding each file with metadata (e.g.
"day1_" or "EastCoast_") might not be the best -- subfolders under the top "source" folder
might be better, though that has issues of its own. 

What I REALLY want to do is something like
    For any input file:
        -- for the requested configuration (eg. day1, East Coast), use the version of the
file whose metadata indicates it is the best match (e.g. day1_personnel.xml, EastCoast_locations.xml,
vehicles.xml). 

Does this help to clarify my question?  I should mention that my real application (not the
one I made up for this e-mail) actually has something like 9 input files that vary on 4 different
parameters, not including specific configuration requests. 

Chris


 --- On Tue 11/07, Matt Benson < gudnabrsam@yahoo.com > wrote:
From: Matt Benson [mailto: gudnabrsam@yahoo.com]
To: user@ant.apache.org, CGibble@excite.com
Date: Tue, 7 Nov 2006 09:05:03 -0800 (PST)
Subject: Re: Selectively copying versions of files

You can copy decreasing levels from most-specific toleast-specific to your target directory,
using a<present> selector.  Check the manual for "Selectors".HTH,Matt

--- Chris Gibble <cgibble@excite.com> wrote:>
My apologies if this has been asked before, but I couldn't find anything related -- and it
seems like a fairly common scenario.

Let's say I have a warehouse program that initializes itself by reading three configuration
files:
	vehicles.xml
	personnel.xml
	locations.xml

This program runs a simulation and generates output showing the efficiency of the warehouse
with the given inputs.

Now let's say I want to package this program with a variety of pre-generated configurations:
	The number of available vehicles (in vehicles.xml) is constant for each configuration --
say, 30
	The number of personnel (in personnel.xml) varies by day, with Sunday = day0 and Saturday
= day6
	The delivery locations (specified by locations.xml) vary between two specified configurations:
"East Coast" and "West Coast"

For example, here are the pre-generated configurations:
	day0 personnel, East Coast locations
	day1 personnel, East Coast locations
	...
	day6 personnel, East Coast locations
	day0 personnel, West Coast locations
	...
	day6 personnel, West Coast locations

To clarify, each "configuration" folder contains a version of the files vehicles.xml, personnel.xml
and locations.xml populated with the desired values.  Note that the number of vehicles was
not specified by the above configurations, since the default value of 30 is always used.

Rather than maintain multiple copies of the same file in each configuration folder (e.g. 14
copies of the same vehicles.xml), I was trying to use an Ant build script to copy the appropriate
files from one "source" location to the appropriate "destination" configuration folder.  So,
there is one "day0-personnel.xml" file, one "EastCoast-locations.xml", and one "vehicles.xml"
file (the default, containing 30 vehicles) that would be copied (and renamed when needed)
into the "Day 0 personnel, East Coast locations, 30 vehicles" configuration folder.

But here's an added wrinkle: in addition to the configurations mentioned above, there is one
more "special" configuration we want to include that uses a different number of vehicles:
	day0 personnel, East Coast locations, 25 vehicles

In this case, the build script would need to copy (and rename) "day0-personnel.xml", "EastCoast-locations.xml",
and "25-vehicles.xml".

Furthermore, there may be future requests for other specific configurations, whether it's
different vehicles, personnel (e.g. "New Year's Day personnel"), locations ("International
locations"), etc.

So in short: given a desired configuration, I want an Ant script that copies the MOST SPECIFIC
file that exists (e.g. 25-vehicles.xml).  If there is no specific file, then a more generic
version should be used (e.g. vehicles.xml).

Of course, I COULD hard-code configurations to copy specific input files, but I'm trying hard
to avoid that....

Any ideas would be greatly appreciated.



_______________________________________________
Join Excite! - http://www.excite.com
The most personalized portal on the Web!



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message