You can subscribe to this list here.
| 2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|---|
|
From: Jacob E. <jac...@ya...> - 2004-07-20 12:46:36
|
Attached are the CVS patch files for the alterations
I've made to n-orca so far. Most of the canges address
issues I ran into in creating a GUI:
* Corrected a problem with serialization of the
TemplateDef object that caused template outputs to be
duplicated when the object was serialized and then
deserialized.
* Moved serialization/deserialization to overloaded
Load/Save methods which accept a Stream object. The
original methods call the overloaded ones passing a
FileStream, and a new Clone() method (Project now
implements IClonable) creates a copy of the project by
serializing to a MemoryStream.
* Removed call to Substitute() from Project.Load()
when a project is deserialized. This call would
substitute paths when the project was loaded,
overwriting any {placeholder} variables. The
Substitute method was also renamed to SubstitutePaths,
and a SubstituteProjectPlaceHolders method was added
which substitutes all project-level placeholders in a
string. Similar methods were also added to
BusinessObject and GeneratorBase, and {placeholder}
substitutions made throught the project were replaced
with calls to these methods. This centralizes the
substitutions in the objects where they are most
relevant, and makes it easier to add additional
placeholders in the future.
* The GeneratorRunner.Run() method now creates a
cloned copy of the project and calls SubstitutePaths()
before running it. This isolates changes made to the
project as a result of running it (path substitutions
in particular). These changes aren't a problem when
running from the command line, but in the GUI, if you
run the project and then save it, all the path
substitutions will be saved.
* Added *_PROC_PATTERN_NAME constants to Project. This
allows me, for example, to specify the outupt of my
stored proc as "{SQL}\{InsertStoredProcPattern}.sql"
* Added some calls to Trace.Writeline() in order to
give some feedback about the generation process in the
GUI. I think this should probably be replaced (or
augmented) with an observer class, or similar, later
on which would allow the communication of more
detailed information back to the GUI.
Any questions or comments, let me know.
Thanks,
-Jacob Eggleston
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail |
|
From: Jacob E. <jac...@ya...> - 2004-07-19 19:50:41
|
I created a (very) simple gui that just allows me to open/edit/save/run a norca project file, and started digging deeper into the way the framework and generation libraries are put together. In the process of doing this, I found (and fixed) a bug or two and started working on several areas where I think n-orca can be improved. Below are some things I am planning on doing, but that wanted to get your oppinions on first: 1) I have started creating a "quick-start" tutorial and accompanying files. The simpleProducts example is good, but it already comes with a lot of steps done for you. I think it would be a good idea to have a more comprehensive tutorial that guides a new user through the entire process of setting up and running a n-orca project, and then greating a facade, proxy, and GUI to work with the generated objects. So I've been writing down some of the obstacles I've run accross as I've been trying to create a project of my own from zero. 2) Create templates for parts of the facade, proxy and GUI. As I go about doing this myself, I think there's room for automation in these layers. 3) Rename the project file extension to ".norca". This is a pretty trivial thing, but would allow things like having an icon, right-click support in Explorer, etc. 4) Add a version marker to the project class and consequently the project file. Ideally, any changes made to the project structure will always be backwards-compatible, but such a marker could be usefull in handling version conflicts later on. 5) Add things like DescriptionAttributes to the Project class (and associated classes) for displaying in the GUI. 6) I'm thinking about different ways to automate some things like creation of SimpleEntity accessor methods and retrieving batches of BusinessObjects. Currently the framework only creates accessor methods for retrieving/saving individual BusinessObjects. The creation of SimpleEntity collections is possible for retrieving lists, but the configuration and SQL to retrieve each entity type must be done manually. I think many of these could be derived automatically based on relationships between tables/entities (i.e. RetrieveProductByProductType). Also, I think it may be usefull at times to retrieve a list of BusinessObjects using the same logic. An example might be when I am displaying a purchase order and its line items. With the current setup, I would have two choices: create the list of line items using a SimpleEntityCollection and retrieve each line item object when it is edited; or I could create an additional accessor method for my LineItemDataAccessor. Currently, both methods would require some manual work. It would be nice to be able to specify a relationship between Order and LineItem, specify that I want to create a BusinessObjectCollection based on that relationship, and have n-orca spit out the appropriate stored procedure and C# code. Tonight I'll send the alterations I've made so far, but I wanted to get any feedback, constructive criticism, or insults on the above plans. Let me know if I'm missing anything or if I'm way off base. Thanks, -Jacob Eggleston __________________________________ Do you Yahoo!? Vote for the stars of Yahoo!'s next ad campaign! http://advision.webevents.yahoo.com/yahoo/votelifeengine/ |
|
From: Jacob E. <jac...@ya...> - 2004-07-12 16:22:40
|
Hello, I'm emailing first of all to inquire about the development status of the framework. The project status on sourceforge shows as "beta", but the version is 1.1 and some of the other things I have read would indicated the framework is pretty stable. But the last release was two months ago, and from what I could tell there hasn't been any CVS activity for a few weeks at least. Is the codebase suitible for a production environment? Is anyone actively using it? The reason I ask is because our company is going to be migrating to .NET and I am trying to put together the framework and coding standards our teams will be using. Second, I looked over the source and it looked to me like there is only a provider for SQL Server. This would be fine for the majority of our development, but we occasionally do other projects with Oracle, and some other back ends. How hard would it to add support for additional providers, such as Oracle and OLEDB. Also, I tried signing up on the mailing list, but when I try to respond to the confirmation email (as per the instructions) I get a delivery failure report. So if you could reply directly to my email, I would be appreciate it. Best Regards, Jacob Eggleston __________________________________ Do you Yahoo!? New and Improved Yahoo! Mail - Send 10MB messages! http://promotions.yahoo.com/new_mail |
|
From: <ben...@id...> - 2004-05-25 08:29:50
|
Dear Open Source developer I am doing a research project on "Fun and Software Development" in which I kindly invite you to participate. You will find the online survey under http://fasd.ethz.ch/qsf/. The questionnaire consists of 53 questions and you will need about 15 minutes to complete it. With the FASD project (Fun and Software Development) we want to define the motivational significance of fun when software developers decide to engage in Open Source projects. What is special about our research project is that a similar survey is planned with software developers in commercial firms. This procedure allows the immediate comparison between the involved individuals and the conditions of production of these two development models. Thus we hope to obtain substantial new insights to the phenomenon of Open Source Development. With many thanks for your participation, Benno Luthiger PS: The results of the survey will be published under http://www.isu.unizh.ch/fuehrung/blprojects/FASD/. We have set up the mailing list fa...@we... for this study. Please see http://fasd.ethz.ch/qsf/mailinglist_en.html for registration to this mailing list. _______________________________________________________________________ Benno Luthiger Swiss Federal Institute of Technology Zurich 8092 Zurich Mail: benno.luthiger(at)id.ethz.ch _______________________________________________________________________ |
|
From: Gary T. <Gar...@il...> - 2004-05-14 18:37:10
|
Yes, I've encountered this issue too. What I've done is create two =
<TemplateDef> sections for each method, but in the second one not =
include objects created in the first, such as the SimpleEntity and the =
SimpleEntityCollection. Of course, this causes some duplication of code =
in the DataAccessor (filling the SimpleEntity). There's no way currently =
to combine the two into one <TemplateDef>, but I agree it would be =
worthwhile to have something like you describe.
=20
Gary=20
________________________________
From: n-o...@li... on behalf of Joe Zhou
Sent: Fri 5/14/2004 11:00 AM
To: n-o...@li...
Subject: [N-ORCA Developer] Issues with Simple Entity
Hi All,
=20
I have a simple entity with multiple retrieve methods associated with =
it. I first used separate <templatedef> block for each method in the =
template file. Then I thought maybe I should be able to include the =
multiple retrieve methods in the same <templatedef> block, then I won't =
have to repeat the <templateoutputs> over and over.
=20
Here is a sample structure of the template that I used,
=20
=20
<TemplateDef>
<Skip>false</Skip>
<IGenerator>ILG.Norca.Generator.DataReaderGenerator</IGenerator>
<TemplateParams>
<TemplateParam>
<Key>Name</Key>
<Value>Registration</Value>
</TemplateParam>
<TemplateParam>
<Key>Sql</Key>
<Value>
SELECT field1,
field2,
field3
=20
FROM tblRegistration
WHERE ParticipantID =3D @ParticipantID
</Value>
</TemplateParam>
<TemplateParam>
<Key>IsStoredProcedure</Key>
<Value>true</Value>
</TemplateParam>
<TemplateParam>
<Key>StoredProcedureName</Key>
<Value>Select_tblRegistrationByParticipantID</Value>
</TemplateParam>
<!--Allows us to know which template to use for
stored proc-->
<TemplateParam>
<Key>StoredProcedureTemplateName</Key>
<Value>DataReaderStoredProc</Value>
</TemplateParam>
<TemplateParam>
<Key>MethodName</Key>
<Value>RetrieveRegistrationByParticipantID</Value>
</TemplateParam>
<TemplateParam>
<Key>BusinessObject</Key>
<Value>Registration</Value>
</TemplateParam>
<!--Sql Parameters, for multiple params repeat these in order -->
<TemplateParam>
<Key>ParameterTableName</Key>
<Value>tblRegistration</Value>
</TemplateParam>
<TemplateParam>
<Key>ParameterColumnName</Key>
<Value>ParticipantID</Value>
</TemplateParam>
<TemplateParam>
<Key>ParameterTestValue</Key>
<Value>1</Value>
</TemplateParam>
<TemplateParam>
<Key>ParameterName</Key>
<Value>@ParticipantID</Value>
</TemplateParam>
<!--End sql parameters-->
<TemplateParam>
<Key>Name</Key>
<Value>Registration</Value>
</TemplateParam>
<TemplateParam>
<Key>Sql</Key>
<Value>
SELECT field1,
field2,
field3
=20
FROM tblRegistration
</Value>
</TemplateParam>
<TemplateParam>
<Key>IsStoredProcedure</Key>
<Value>true</Value>
</TemplateParam>
<TemplateParam>
<Key>StoredProcedureName</Key>
<Value>Select_tblRegistrationAll</Value>
</TemplateParam>
<!--Allows us to know which template to use for
stored proc-->
<TemplateParam>
<Key>StoredProcedureTemplateName</Key>
<Value>DataReaderStoredProc</Value>
</TemplateParam>
<TemplateParam>
<Key>MethodName</Key>
<Value>RetrieveRegistrationAll</Value>
</TemplateParam>
<TemplateParam>
<Key>BusinessObject</Key>
<Value>Registration</Value>
</TemplateParam>
<!--Sql Parameters, for multiple params repeat these in order -->
<!--End sql parameters-->
</TemplateParams>
<TemplateOutputs>
<TemplateOutput Template=3D"SimpleEntity.vm" =
RegenTemplate=3D"SimpleEntityRegen.vm" =
Output=3D"BusinessCommon\SimpleEntities\RegistrationSimpleEntity.cs" =
Skip=3D"false"/>
<TemplateOutput Template=3D"SimpleEntityCollection.vm" =
Output=3D"BusinessCommon\SimpleEntities\RegistrationSimpleEntityCollectio=
n.cs" Skip=3D"false"/>
<TemplateOutput =
RegenTemplate=3D"SimpleEntityReaderCollectionTestRegen.vm" =
Output=3D"{BusinessTestFolder}\RegistrationManagerTest.cs" =
Skip=3D"false" AppendIfMissing=3D"true" RegionName=3D"Registration =
Collection Tests"/>
<TemplateOutput Template=3D"DataReaderStoredProc.vm" =
Skip=3D"false"/>
<TemplateOutput =
RegenTemplate=3D"SimpleEntityReaderDataAccessorRegen.vm" =
Output=3D"{DataAccessorFolder}\RegistrationDataAccessLayer.cs" =
Skip=3D"false" AppendIfMissing=3D"true"/>
<TemplateOutput =
RegenTemplate=3D"SimpleEntityReaderBusinessManagerRegen.vm" =
Output=3D"{BusinessManagerFolder}\RegistrationManager.cs" Skip=3D"false" =
AppendIfMissing=3D"true"/>
<TemplateOutput RegenTemplate=3D"SimpleEntityReaderTestRegen.vm" =
Output=3D"{BusinessTestFolder}\RegistrationManagerTest.cs" =
Skip=3D"false" AppendIfMissing=3D"true"/>
</TemplateOutputs>
</TemplateDef>=20
When code generator runs, it will only generate the latest method which =
is RetrieveRegistrationAll in the business manager class with the =
parameter participantID. Has anyone worked on this one before? I think =
it will be convenient if we can include multiple retrieve methods for =
the same simple entity in the same <templatedef> block.
=20
I hope this makes sense to everyone. Please let me know if you need =
more clarification.
=20
Thanks,
=20
Joe Zhou
gan...@ho...
(970) 214-4779 (cell)
970...@mo... (TM)
|
|
From: Joe Z. <gan...@ho...> - 2004-05-14 17:17:11
|
Hi All,
I have a simple entity with multiple retrieve methods associated with =
it. I first used separate <templatedef> block for each method in the =
template file. Then I thought maybe I should be able to include the =
multiple retrieve methods in the same <templatedef> block, then I won't =
have to repeat the <templateoutputs> over and over.
Here is a sample structure of the template that I used,
<TemplateDef>
<Skip>false</Skip>
<IGenerator>ILG.Norca.Generator.DataReaderGenerator</IGenerator>
<TemplateParams>
<TemplateParam>
<Key>Name</Key>
<Value>Registration</Value>
</TemplateParam>
<TemplateParam>
<Key>Sql</Key>
<Value>
SELECT field1,
field2,
field3
=20
FROM tblRegistration
WHERE ParticipantID =3D @ParticipantID
</Value>
</TemplateParam>
<TemplateParam>
<Key>IsStoredProcedure</Key>
<Value>true</Value>
</TemplateParam>
<TemplateParam>
<Key>StoredProcedureName</Key>
<Value>Select_tblRegistrationByParticipantID</Value>
</TemplateParam>
<!--Allows us to know which template to use for
stored proc-->
<TemplateParam>
<Key>StoredProcedureTemplateName</Key>
<Value>DataReaderStoredProc</Value>
</TemplateParam>
<TemplateParam>
<Key>MethodName</Key>
<Value>RetrieveRegistrationByParticipantID</Value>
</TemplateParam>
<TemplateParam>
<Key>BusinessObject</Key>
<Value>Registration</Value>
</TemplateParam>
<!--Sql Parameters, for multiple params repeat these in order -->
<TemplateParam>
<Key>ParameterTableName</Key>
<Value>tblRegistration</Value>
</TemplateParam>
<TemplateParam>
<Key>ParameterColumnName</Key>
<Value>ParticipantID</Value>
</TemplateParam>
<TemplateParam>
<Key>ParameterTestValue</Key>
<Value>1</Value>
</TemplateParam>
<TemplateParam>
<Key>ParameterName</Key>
<Value>@ParticipantID</Value>
</TemplateParam>
<!--End sql parameters-->
<TemplateParam>
<Key>Name</Key>
<Value>Registration</Value>
</TemplateParam>
<TemplateParam>
<Key>Sql</Key>
<Value>
SELECT field1,
field2,
field3
=20
FROM tblRegistration
</Value>
</TemplateParam>
<TemplateParam>
<Key>IsStoredProcedure</Key>
<Value>true</Value>
</TemplateParam>
<TemplateParam>
<Key>StoredProcedureName</Key>
<Value>Select_tblRegistrationAll</Value>
</TemplateParam>
<!--Allows us to know which template to use for
stored proc-->
<TemplateParam>
<Key>StoredProcedureTemplateName</Key>
<Value>DataReaderStoredProc</Value>
</TemplateParam>
<TemplateParam>
<Key>MethodName</Key>
<Value>RetrieveRegistrationAll</Value>
</TemplateParam>
<TemplateParam>
<Key>BusinessObject</Key>
<Value>Registration</Value>
</TemplateParam>
<!--Sql Parameters, for multiple params repeat these in order -->
<!--End sql parameters-->
</TemplateParams>
<TemplateOutputs>
<TemplateOutput Template=3D"SimpleEntity.vm" =
RegenTemplate=3D"SimpleEntityRegen.vm" =
Output=3D"BusinessCommon\SimpleEntities\RegistrationSimpleEntity.cs" =
Skip=3D"false"/>
<TemplateOutput Template=3D"SimpleEntityCollection.vm" =
Output=3D"BusinessCommon\SimpleEntities\RegistrationSimpleEntityCollectio=
n.cs" Skip=3D"false"/>
<TemplateOutput =
RegenTemplate=3D"SimpleEntityReaderCollectionTestRegen.vm" =
Output=3D"{BusinessTestFolder}\RegistrationManagerTest.cs" =
Skip=3D"false" AppendIfMissing=3D"true" RegionName=3D"Registration =
Collection Tests"/>
<TemplateOutput Template=3D"DataReaderStoredProc.vm" =
Skip=3D"false"/>
<TemplateOutput =
RegenTemplate=3D"SimpleEntityReaderDataAccessorRegen.vm" =
Output=3D"{DataAccessorFolder}\RegistrationDataAccessLayer.cs" =
Skip=3D"false" AppendIfMissing=3D"true"/>
<TemplateOutput =
RegenTemplate=3D"SimpleEntityReaderBusinessManagerRegen.vm" =
Output=3D"{BusinessManagerFolder}\RegistrationManager.cs" Skip=3D"false" =
AppendIfMissing=3D"true"/>
<TemplateOutput RegenTemplate=3D"SimpleEntityReaderTestRegen.vm" =
Output=3D"{BusinessTestFolder}\RegistrationManagerTest.cs" =
Skip=3D"false" AppendIfMissing=3D"true"/>
</TemplateOutputs>
</TemplateDef>=20
When code generator runs, it will only generate the latest method which =
is RetrieveRegistrationAll in the business manager class with the =
parameter participantID. Has anyone worked on this one before? I think =
it will be convenient if we can include multiple retrieve methods for =
the same simple entity in the same <templatedef> block.
I hope this makes sense to everyone. Please let me know if you need =
more clarification.
Thanks,
Joe Zhou
gan...@ho...
(970) 214-4779 (cell)
970...@mo... (TM) |