View Single Post
Old 09-16-2004, 05:33 AM  
Junior Member
Join Date: Apr 2004
Posts: 18

Originally posted by bigstar
actually it's a really complicated feature, I haven't been able to come up with a good way of displaying such a complicated configuration. It's almost a logic that needs to be scripted.


If Larger and older then overwrite

If Equal or older than overwrite

If older than overwrite

There's so many different combinations of possibilities.
hrm...yeah, I can see that getting complex. I dunno about the coding, but it's an interesting problem just as far as the UI goes.

Seems like maybe you could have something similar to the current drop-down menu set in "file exists", but have a bunch of rows that each had dropdowns for [destination] file date, file size, transfer type, and action.

file date would have: older, newer, same, any.
file size would have: larger, smaller, same, any.
transfer type: upload, download, fxp, any.
action: overwrite, skip, resume, ask.

Relationship between the first 3 elements of each row would be "and", between the 3rd & 4th "then".

To keep from having to set a row for every possibility, you could either have any situation not defined by a rule [row] default to a user-defined action like "ask" or "skip", or (maybe more complicated, but definitely more flexible) the rules could be prioritized so that rules defined on lower rows would be overridden by those defined on higher rows in the event of a conflict.

so for your examples:

For "equal or older then overwrite" (assuming that there's a separate drop-down allowing the user to set a default action for undefined situations, say "skip" in this example) you'd set the first row (assuming the menus are in the order listed above): older, any, any, overwrite; and the second row you'd set to: same, any, any, overwrite.

to do the same thing using the "prioritized rules" method instead of the "user defined default" method, you'd set the third row to "any, any, any, skip" (which would work well as the default setting for all rows -- or maybe any, any, any, ask).

For "larger and older then overwrite" you'd need only set the first row to: older, larger, any, overwrite (and in the case of the 'prioritized rules' method, you'd set the 2nd row to any, any, any, skip).

if you wanted to always overwrite older files, it'd be the first row set to "older, any, any, overwrite" (and again set the default action or set the 2nd line to any, any, any, skip).

a common setting might be "if older then overwrite, if newer then skip, if equal and smaller then resume, if equal and equal then skip, if equal and larger then ask". This would only require you to set (in the "prioritized rules" method) 3 rules plus the standard final "default" rule:

1. older, any, any, overwrite
2. same, smaller, any, resume
3. same, larger, any, ask
4. any, any, any, skip

In the "user defined default" method, the menus in each row would have to default to a null setting (so that unused rows wouldn't be defining an action). for the "prioritized rules" method, you wouldn't need to do that, since any row beneath "any, any, any, [whatever]" would have no effect -- so if the default for all rows was any, any, any, skip then the user could set however many rules he wanted & then just leave the rest alone (if he wanted it to skip unless defined otherwise) or else set the rules he wanted & then set the next row to any, any, any, ask (if that's what he wanted). the any, any, any, skip rows beneath that one would be overridden.

Heh twisty stuff. Fun to think about :)

//edit: On reflection, I'm not sure if in the "prioritized rules" method you could possibly encounter a situation such that you would want two rules to have the same priority. I can't think of one offnand, but then again, it's late ;)

If so, I guess you'd have to have and/or dropdowns between each of the first 3 elements in each row, which seems awkward... you could have a numbered "priority" dropdown for each row instead, and set two to the same number, but that'd allow for conflicts & it seems like such a thing could be better expressed in a single line somehow anyway. But like I say, I can't think of a case where it'd be an issue anyway, since each row defines a unique "and" combination, and so shouldn't conflict with one another at all (if two rows had the same "and" combination, but a different "then" response, the lower row would obviously have no effect). so maybe there'd be no need for such a thing.

//edit 2: the "prioritized rules" would have an advantage over the "user-defined default action" in a situation such as "if older then overwrite, if equal and smaller then resume, if equal and equal then skip, if equal and larger then ask, otherwise skip -- unless uploading, in which case always overwrite". For this you'd set:

1. any, any, upload, overwrite
2. older, any, any, overwrite
3. same, smaller, any, resume
4. same, larger, any, ask
5. any, any, any, skip

I think it'd be a lot harder to do something like that with the "user-defined default action" method, and more complicated combinations would probably be impossible.

Also, with the "user-defined default" method, you'd need some separate way to deal with rule conflicts (which is eliminated if the rules are prioritized).
lax is offline