[kplato] CVS Diff changes

Chris Clarke kplato@kde.org
Wed, 4 Jul 2001 17:25:12 -0700


--------------Boundary-00=_065ZL578N0HV9QIYC6JR
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Thomas,

Your initial code looks good.  I've attached a few changes to the hierarchy, 
as detailed below.

Changes:

* Added a virtual add/insertDependNode to KPTNode; any type of node can have 
dependencies (task, milestone, even resource). 

* Put skeleton code in the above functions to ensure the node has no children 
before allowing relationships to be inserted

* Removed the empty add/insertDependNode from KPTMilestone; milestones can 
have dependencies (to define what tasks must complete for the milestone to be 
declared for instance)

* Added a virtual removeDependNode to KPTNode (for completeness)

* I've reversed the list and functions in KPTNode to assign resources which 
have associated risks (it was originally the other way around).  From the 
application side it makes more sense to assign a list of resources to the 
task and then associate a risk with each resource.

* A KPTResource is actually a KPTNode, because it exists in the tree just 
like any other node.  I've put in the public inheritance to show that.  (If 
you want an analysis of this, look at 
http://master.kde.org/pipermail/kplato/2001-June/000042.html and my follow up)

* KPTRisk (and all the associated functions) get moved out of KPTResource and 
up into KPTNode.  The theory behind this is when I'm planning, anything in 
the near future will be broken down into subtasks, then resources, and 
planned down to the last person.  Things farther in the future will not be 
planned to the same detail -- I'll give the task an estimated duration and 
risk, then when I get closer I'll break it down into resources.  Basically 
the test is any node that does not have children can have a duration and a 
risk assigned to it.

* Moved all KPTResource functions (which were KPTRisk originally :-) out of 
KPTNode and into KPTTask; from what I can see it only makes sense to
assign resources to tasks -- we wouldn't assign them to milestones or
other resources.

Thoughts:

* I wonder if the expected/optimistic/expected duration, and risk should be 
moved into their own class -- one thing that I can see is in the situation I 
listed in the KPTRisk changes, when I get around to doing a better breakdown 
on the later tasks as soon as I create a subtask under it all the durations 
and relationships should get bumped down to that subtask (because you aren't 
allowed to have relationships or risks unless you are a leaf node).  
Encapsulating the duration might make that a bit easier to do.

Did you get all that? :-)

I've attached the diff file, it's probably easier to see the code changes 
than understand my above explanations.  Feel free to tear my ideas apart.  
This does compile on my machine.

Cheers,
Chris.
-- 
Chris Clarke
security@cfourconsulting.com
http://cfourconsulting.com
--------------Boundary-00=_065ZL578N0HV9QIYC6JR
Content-Type: text/x-c++;
  charset="iso-8859-1";
  name="chrisc.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="chrisc.diff"

SW5kZXg6IGtwdG1pbGVzdG9uZS5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUva29m
ZmljZS9rcGxhdG8va3B0bWlsZXN0b25lLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlm
ZiAtcjEuNCBrcHRtaWxlc3RvbmUuY2MKMzZkMzUKPCAKSW5kZXg6IGtwdG5vZGUuY2MKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tvZmZpY2Uva3BsYXRvL2twdG5vZGUuY2MsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1yMS40IGtwdG5vZGUuY2MKMjFjMjEKPCBLUFROb2Rl
OjpLUFROb2RlKCkgOiBtX25vZGVzKCksIG1fZGVwZW5kQ2hpbGROb2RlcygpLCBtX2RlcGVuZFBh
cmVudE5vZGVzKCksIG1fcmlzaygpIHsKLS0tCj4gS1BUTm9kZTo6S1BUTm9kZSgpIDogbV9ub2Rl
cygpLCBtX2RlcGVuZENoaWxkTm9kZXMoKSwgbV9kZXBlbmRQYXJlbnROb2RlcygpIHsKMjNkMjIK
PCAgICAgICAgIG1fcmlzay5zZXRBdXRvRGVsZXRlKHRydWUpOwo0NWM0NCw0NQo8IHZvaWQgS1BU
Tm9kZTo6YWRkUmlzayggS1BUUmlzayAqcmlzayApIHsKLS0tCj4gCj4gdm9pZCBLUFROb2RlOjpp
bnNlcnRDaGlsZE5vZGUoIHVuc2lnbmVkIGludCBpbmRleCwgS1BUTm9kZSAqbm9kZSkgewo0OCw0
OWM0OAo8IHZvaWQgS1BUTm9kZTo6cmVtb3ZlUmlzayggS1BUUmlzayAqcmlzayApewo8ICAgIC8v
IGFsd2F5cyBhdXRvIHJlbW92ZQotLS0KPiB2b2lkIEtQVE5vZGU6OmFkZENoaWxkTm9kZSggS1BU
Tm9kZSAqbm9kZSkgewo1Miw1M2M1MSw1OQo8IHZvaWQgS1BUTm9kZTo6cmVtb3ZlUmlzayggaW50
IG51bWJlciApewo8ICAgIC8vIGFsd2F5cyBhdXRvIHJlbW92ZQotLS0KPiBLUFRSZWxhdGlvbjo6
UmVzdWx0IEtQVE5vZGU6OmFkZERlcGVuZE5vZGUoIEtQVE5vZGUqLCBUaW1pbmdUeXBlLCBUaW1p
bmdSZWxhdGlvbikgewo+ICAgLy8gT25seSBwb3NzaWJsZSBpZiB3ZSBoYXZlIGEgdGVybWluYWwg
bm9kZQo+IAo+ICAgaWYgKCAhbV9ub2Rlcy5pc0VtcHR5KCkgKSB7Cj4gICAJcmV0dXJuIEtQVFJl
bGF0aW9uOjpIQVNDSElMRFJFTjsKPiAgIH0KPiAKPiAgIHJldHVybiBLUFRSZWxhdGlvbjo6Tk9U
SU1QTDsKPiAKNTZjNjIsNzAKPCB2b2lkIEtQVE5vZGU6Omluc2VydFJpc2soIHVuc2lnbmVkIGlu
dCBpbmRleCwgS1BUUmlzayAqcmlzayApIHsKLS0tCj4gCj4gS1BUUmVsYXRpb246OlJlc3VsdCBL
UFROb2RlOjppbnNlcnREZXBlbmROb2RlKCB1bnNpZ25lZCBpbnQsIEtQVE5vZGUgKiwgVGltaW5n
VHlwZSwgVGltaW5nUmVsYXRpb24pIHsKPiAgIC8vIE9ubHkgcG9zc2libGUgaWYgd2UgaGF2ZSBh
IHRlcm1pbmFsIG5vZGUKPiAKPiAgIGlmICggIW1fbm9kZXMuaXNFbXB0eSgpICkgewo+ICAgCXJl
dHVybiBLUFRSZWxhdGlvbjo6SEFTQ0hJTERSRU47Cj4gICB9Cj4gCj4gICByZXR1cm4gS1BUUmVs
YXRpb246Ok5PVElNUEw7CjU5YzczCjwgdm9pZCBLUFROb2RlOjppbnNlcnRDaGlsZE5vZGUoIHVu
c2lnbmVkIGludCBpbmRleCwgS1BUTm9kZSAqbm9kZSkgewotLS0KPiB2b2lkIEtQVE5vZGU6OnJl
bW92ZURlcGVuZE5vZGUoIEtQVE5vZGUqIG5vZGUpIHsKNjJjNzYsODIKPCB2b2lkIEtQVE5vZGU6
OmFkZENoaWxkTm9kZSggS1BUTm9kZSAqbm9kZSkgewotLS0KPiB2b2lkIEtQVE5vZGU6OnJlbW92
ZURlcGVuZE5vZGUoIHVuc2lnbmVkIGludCBpbmRleCl7Cj4gfQo+IAo+IEtQVFJpc2sgKktQVE5v
ZGU6OnJpc2soKSB7Cj4gfQo+IAo+IHZvaWQgS1BUTm9kZTo6c2V0UmlzayhLUFRSaXNrICpyaXNr
KSB7CkluZGV4OiBrcHRyZXNvdXJjZS5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUv
a29mZmljZS9rcGxhdG8va3B0cmVzb3VyY2UuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpk
aWZmIC1yMS4zIGtwdHJlc291cmNlLmNjCjI5LDM0ZDI4CjwgS1BUUmlzayAqS1BUUmVzb3VyY2U6
OnJpc2soKSB7CjwgfQo8IAo8IHZvaWQgS1BUUmVzb3VyY2U6OnNldFJpc2soS1BUUmlzayAqcmlz
aykgewo8IH0KPCAKSW5kZXg6IGtwdHRhc2suY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUv
a2RlL2tvZmZpY2Uva3BsYXRvL2twdHRhc2suY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpk
aWZmIC1yMS4zIGtwdHRhc2suY2MKMjIsMjNjMjIsMjMKPCBLUFRUYXNrOjpLUFRUYXNrKCkgOiBL
UFROb2RlKCkgewo8ICAgICAgICAgbV9ub2RlVHlwZT1UQVNLOwotLS0KPiBLUFRUYXNrOjpLUFRU
YXNrKCkgOiBLUFROb2RlKCksIG1fcmVzb3VyY2UoKSB7Cj4gICAgICBtX3Jlc291cmNlLnNldEF1
dG9EZWxldGUodHJ1ZSk7IG1fbm9kZVR5cGU9VEFTSzsKNDRhNDUsNTcKPiB2b2lkIEtQVFRhc2s6
OmFkZFJlc291cmNlKCBLUFRSZXNvdXJjZSAqcmVzb3VyY2UgKSB7Cj4gfQo+IAo+IHZvaWQgS1BU
VGFzazo6cmVtb3ZlUmVzb3VyY2UoIEtQVFJlc291cmNlICpyZXNvdXJjZSApewo+ICAgIC8vIGFs
d2F5cyBhdXRvIHJlbW92ZQo+IH0KPiAKPiB2b2lkIEtQVFRhc2s6OnJlbW92ZVJlc291cmNlKCBp
bnQgbnVtYmVyICl7Cj4gICAgLy8gYWx3YXlzIGF1dG8gcmVtb3ZlCj4gfQo+IAo+IHZvaWQgS1BU
VGFzazo6aW5zZXJ0UmVzb3VyY2UoIHVuc2lnbmVkIGludCBpbmRleCwgS1BUUmVzb3VyY2UgKnJl
c291cmNlICkgewo+IH0KSW5kZXg6IGtwdG1pbGVzdG9uZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9ob21lL2tkZS9rb2ZmaWNlL2twbGF0by9rcHRtaWxlc3RvbmUuaCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4zCmRpZmYgLXIxLjMga3B0bWlsZXN0b25lLmgKNDQsNDZkNDMKPCAgICAgICAgIHZv
aWQgYWRkRGVwZW5kTm9kZSggS1BUTm9kZSosIFRpbWluZ1R5cGUsIFRpbWluZ1JlbGF0aW9uKSB7
fQo8ICAgICAgICAgdm9pZCBpbnNlcnREZXBlbmROb2RlKCB1bnNpZ25lZCBpbnQsIEtQVE5vZGUg
KiwgVGltaW5nVHlwZSwgVGltaW5nUmVsYXRpb24pIHt9CjwgCkluZGV4OiBrcHRub2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tvZmZpY2Uva3BsYXRvL2twdG5vZGUuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXIxLjQga3B0bm9kZS5oCjI3ZDI2CjwgI2luY2x1
ZGUgImtwdHJlc291cmNlLmgiCjI5YTI5Cj4gY2xhc3MgS1BUUmlzazsKNTMsNjFjNTMsNjQKPCAg
ICAgICAgIC8vIHJlc291cmNlcyBtYW5hZ2VtZW50CjwgICAgICAgICAvKiogVGhlIHJlc291cmNl
cyBhcmUgY291cGxlZCB3aXRoIGEgdXNlciBzcGVjaWZpZWQgcmlzaywgd2UgbGlzdCB0aGUKPCAg
ICAgICAgICAqICByaXNrcyBoZXJlLCB0aGUgcmlza3MgY29udGFpbiBhIGxpbmsgdG8gdGhlIHJl
c291cmNlIGl0c2VsZi4KPCAgICAgICAgICAqLwo8ICAgICAgICAgY29uc3QgUUxpc3Q8S1BUUmlz
az4gJnJpc2tJdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmlzazsgfQo8ICAgICAgICAgdmly
dHVhbCB2b2lkIGFkZFJpc2soIEtQVFJpc2sgKnJpc2sgKTsKPCAgICAgICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRSaXNrKCB1bnNpZ25lZCBpbnQgaW5kZXgsIEtQVFJpc2sgKnJpc2sgKTsKPCAgICAg
ICAgIHZvaWQgcmVtb3ZlUmlzayggS1BUUmlzayAqcmlzayApOwo8ICAgICAgICAgdm9pZCByZW1v
dmVSaXNrKCBpbnQgbnVtYmVyICk7Ci0tLQo+ICAgICAgICAgLy8gRGVwZW5kZW5jeSBtYW5hZ2Vt
ZW50LiAgQWxsIHR5cGVzIG9mIHRhc2tzIG5vZGVzIGNhbiBoYXZlIGRlcGVuZGVuY2llcwo+ICAg
ICAgICAgLy8gYXMgbG9uZyBhcyB0aGV5IGhhdmUgbm8gY2hpbGQgbm9kZXMKPiAKPiAgICAgICAg
IHZpcnR1YWwgS1BUUmVsYXRpb246OlJlc3VsdCBhZGREZXBlbmROb2RlKCBLUFROb2RlKiwgVGlt
aW5nVHlwZSwgVGltaW5nUmVsYXRpb24pOwo+ICAgICAgICAgdmlydHVhbCBLUFRSZWxhdGlvbjo6
UmVzdWx0IGluc2VydERlcGVuZE5vZGUoIHVuc2lnbmVkIGludCwgS1BUTm9kZSAqLCBUaW1pbmdU
eXBlLCBUaW1pbmdSZWxhdGlvbik7Cj4gCj4gICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGVw
ZW5kTm9kZSggS1BUTm9kZSogbm9kZSk7Cj4gICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGVw
ZW5kTm9kZSggdW5zaWduZWQgaW50IGluZGV4KTsKPiAKPiAKPiAgICAgICAgIEtQVFJpc2sgKnJp
c2soKTsKPiAgICAgICAgIHZvaWQgc2V0UmlzayhLUFRSaXNrICpyaXNrKTsKMTI5ZDEzMQo8ICAg
ICAgICAgUUxpc3Q8S1BUUmlzaz4gbV9yaXNrOwoxMzZhMTM5Cj4gICAgICAgICBLUFRSaXNrICpt
X3Jpc2s7CkluZGV4OiBrcHRyZWxhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tk
ZS9rb2ZmaWNlL2twbGF0by9rcHRyZWxhdGlvbi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIK
ZGlmZiAtcjEuMiBrcHRyZWxhdGlvbi5oCjQ0YTQ1LDUxCj4gCj4gICAgICAgICBlbnVtIFJlc3Vs
dCB7Cj4gICAgICAgICAgIFNVQ0NFU1MgPSAwbCwKPiAgICAgICAgICAgSEFTQ0hJTERSRU4gPSAx
bCwKPiAgICAgICAgICAgTk9USU1QTCA9IDJsLAo+ICAgICAgICAgfTsKPiAKSW5kZXg6IGtwdHJl
c291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tvZmZpY2Uva3BsYXRvL2tw
dHJlc291cmNlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1yMS4yIGtwdHJlc291
cmNlLmgKMjdhMjgsMjkKPiAjaW5jbHVkZSAia3B0bm9kZS5oIgo+IAozMWQzMgo8IGNsYXNzIEtQ
VFJpc2s7CjMzZDMzCjwgY2xhc3MgS1BUTm9kZTsKMzVjMzUKPCBjbGFzcyBLUFRSZXNvdXJjZSB7
Ci0tLQo+IGNsYXNzIEtQVFJlc291cmNlIDogcHVibGljIEtQVE5vZGUgewo0MSw0MmQ0MAo8ICAg
ICAgICAgS1BUUmlzayAqcmlzaygpOwo8ICAgICAgICAgdm9pZCBzZXRSaXNrKEtQVFJpc2sgKnJp
c2spOwo1OWQ1Ngo8ICAgICAgICAgS1BUUmlzayAqbV9yaXNrOwpJbmRleDoga3B0dGFzay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rb2ZmaWNlL2twbGF0by9rcHR0YXNrLmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1yMS4yIGtwdHRhc2suaAoyNGEyNQo+ICNpbmNs
dWRlICJrcHRyZXNvdXJjZS5oIgo1NmE1OCw3Mgo+IAo+ICAgICAgICAvLyByZXNvdXJjZXMgbWFu
YWdlbWVudAo+ICAgICAgICAgLyoqIFRoZSByZXNvdXJjZXMgYXJlIHByb3ZpZGVkIGFzIGEgbGlz
dCwgZWFjaCBoYXZpbmcgYW4gYXNzb2NpYXRlZCByaXNrLgo+ICAgICAgICAgICAgIHdlIHJldHVy
biB0aGUgcmVzb3VyY2UgaGVyZSB3aGljaCBoYXMgYSBwb2ludGVyIHRvIHRoZSByaXNrCj4gICAg
ICAgICAgKi8KPiAgICAgICAgIGNvbnN0IFFMaXN0PEtQVFJlc291cmNlPiAmcmVzb3VyY2VJdGVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2U7IH0KPiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBhZGRSZXNvdXJjZSggS1BUUmVzb3VyY2UgKnJlc291cmNlICk7Cj4gICAgICAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0UmVzb3VyY2UoIHVuc2lnbmVkIGludCBpbmRleCwgS1BUUmVzb3VyY2UgKnJl
c291cmNlICk7Cj4gICAgICAgICB2b2lkIHJlbW92ZVJlc291cmNlKCBLUFRSZXNvdXJjZSAqcmVz
b3VyY2UgKTsKPiAgICAgICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UoIGludCBudW1iZXIgKTsKPiAK
PiAKPiAKPiAgIHByaXZhdGU6Cj4gICAgICAgICBRTGlzdDxLUFRSZXNvdXJjZT4gbV9yZXNvdXJj
ZTsK

--------------Boundary-00=_065ZL578N0HV9QIYC6JR--