Re: [Hardhats-members] Data dictionary question

2005-09-28 Thread Kevin Toppenberg
Interesting.  I just did it again.  I am prompted for a field number,
but not for the node to store the data in.

I wonder which of us has the more recent code (or even how to tell.?

Kevin
On 9/27/05, steven mcphelan [EMAIL PROTECTED] wrote:
 This is a false statement:
 Turns out that the screenman way doesn't allow one to specify the node to
 store data on.

 I use screenman exclusively for creating new fields in files.  I am always
 prompted to for node and piece to store the data.



---
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


RE: [Hardhats-members] Data dictionary question

2005-09-28 Thread Holloway, Thomas (EDS)
Kevin,
   Are you going into FileMan with either P^DI or Q^DI ?  Those entry
points let FileMan know that you are a programmer.  If FileMan thinks
that you are not a programmer, it won't let you set the node and piece
number.

   tjh

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Kevin
Toppenberg
Sent: Wednesday, September 28, 2005 9:41 AM
To: hardhats-members@lists.sourceforge.net
Subject: Re: [Hardhats-members] Data dictionary question

Interesting.  I just did it again.  I am prompted for a field number,
but not for the node to store the data in.

I wonder which of us has the more recent code (or even how to tell.?

Kevin
On 9/27/05, steven mcphelan [EMAIL PROTECTED] wrote:
 This is a false statement:
 Turns out that the screenman way doesn't allow one to specify the node
to
 store data on.

 I use screenman exclusively for creating new fields in files.  I am
always
 prompted to for node and piece to store the data.



---
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads,
discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


---
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question

2005-09-28 Thread Kevin Toppenberg
I was going in through do ^XUP, then getting to the fileman options
through the menu system.  I have a program access code of @.  I
haven't found anything else that locks me out with this method.  I
would be interested to know if what you describe gives more
abilities...


Kevin


On 9/28/05, Holloway, Thomas (EDS) [EMAIL PROTECTED] wrote:
 Kevin,
Are you going into FileMan with either P^DI or Q^DI ?  Those entry
 points let FileMan know that you are a programmer.  If FileMan thinks
 that you are not a programmer, it won't let you set the node and piece
 number.

tjh

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of Kevin
 Toppenberg
 Sent: Wednesday, September 28, 2005 9:41 AM
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question

 Interesting.  I just did it again.  I am prompted for a field number,
 but not for the node to store the data in.

 I wonder which of us has the more recent code (or even how to tell.?

 Kevin
 On 9/27/05, steven mcphelan [EMAIL PROTECTED] wrote:
  This is a false statement:
  Turns out that the screenman way doesn't allow one to specify the node
 to
  store data on.
 
  I use screenman exclusively for creating new fields in files.  I am
 always
  prompted to for node and piece to store the data.
 


 ---
 This SF.Net email is sponsored by:
 Power Architecture Resource Center: Free content, downloads,
 discussions,
 and more. http://solutions.newsforge.com/ibmarch.tmpl
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members


 ---
 This SF.Net email is sponsored by:
 Power Architecture Resource Center: Free content, downloads, discussions,
 and more. http://solutions.newsforge.com/ibmarch.tmpl
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members



---
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


RE: [Hardhats-members] Data dictionary question

2005-09-28 Thread Holloway, Thomas (EDS)
Kevin,
   As a FileMan troglodyte, I never go in through the menu system and I
avoid ScreenMan if possible.  I prefer the Line Editor and roll  scroll
entry.  I hadn't ever seen what would happen if I went into FM from the
EVE menu and added a field to a file.  Well, now I've tried it.  I do
get the prompt for node and piece.  Here's the screen scrape:

  Field #47 in File #101747

FIELD LABEL: KEVINDATA TYPE... FREE TEXT


   -
   |  SUBSCRIPT: 1 |
AUDIT C| PIECE-POSITION: 1 |
REA-
  DELETE ACCESS:
   WRITE ACCESS:
 SOURCE:
 DESCRIPTION...TECHNICAL DESCRIPTION...

  IS THIS FIELD MULTIPLE... NO 

 MANDATORY: NO 
   HELP-PROMPT: Answer must be 5-22 characters in length

XECUTABLE HELP:

___


The inset window came up after I answered NO to the Multiple prompt.  If
you're not seeing this, and if you are correct about having the @ mode
set, I'm not sure what the problem is.

   tjh


 

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Kevin
Toppenberg
Sent: Wednesday, September 28, 2005 10:22 AM
To: hardhats-members@lists.sourceforge.net
Subject: Re: [Hardhats-members] Data dictionary question

I was going in through do ^XUP, then getting to the fileman options
through the menu system.  I have a program access code of @.  I
haven't found anything else that locks me out with this method.  I
would be interested to know if what you describe gives more
abilities...


Kevin


On 9/28/05, Holloway, Thomas (EDS) [EMAIL PROTECTED] wrote:
 Kevin,
Are you going into FileMan with either P^DI or Q^DI ?  Those entry
 points let FileMan know that you are a programmer.  If FileMan thinks
 that you are not a programmer, it won't let you set the node and piece
 number.

tjh

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of
Kevin
 Toppenberg
 Sent: Wednesday, September 28, 2005 9:41 AM
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question

 Interesting.  I just did it again.  I am prompted for a field number,
 but not for the node to store the data in.

 I wonder which of us has the more recent code (or even how to tell.?

 Kevin
 On 9/27/05, steven mcphelan [EMAIL PROTECTED] wrote:
  This is a false statement:
  Turns out that the screenman way doesn't allow one to specify the
node
 to
  store data on.
 
  I use screenman exclusively for creating new fields in files.  I am
 always
  prompted to for node and piece to store the data.
 


 ---
 This SF.Net email is sponsored by:
 Power Architecture Resource Center: Free content, downloads,
 discussions,
 and more. http://solutions.newsforge.com/ibmarch.tmpl
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members


 ---
 This SF.Net email is sponsored by:
 Power Architecture Resource Center: Free content, downloads,
discussions,
 and more. http://solutions.newsforge.com/ibmarch.tmpl
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members



---
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads,
discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


---
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question

2005-09-27 Thread steven mcphelan
This is a false statement:
Turns out that the screenman way doesn't allow one to specify the node to
store data on.

I use screenman exclusively for creating new fields in files.  I am always
prompted to for node and piece to store the data.

- Original Message - 
From: Kevin Toppenberg [EMAIL PROTECTED]
To: Hardhats Sourceforge hardhats-members@lists.sourceforge.net
Sent: Tuesday, September 27, 2005 10:32 PM
Subject: [Hardhats-members] Data dictionary question


Trick/Quick question: Where all is the node;piece stored in the data
dictionary?

I ask because I think it is stored in two places, and I can only find
one of them.

I had added a field (#22700--my number space) to file 2005.2 using the
screenman form method (mistake!).  Turns out that the screenman way
doesn't allow one to specify the node to store data on.

I then had the option of deleting the field and entering everything
back in again.  I had written lengthy descriptions so wanted to avoid
that if possible.

I had not entered any actual data into the field, and had created no
cross-references, so I thought that I could change its DD definition
OK (you know about assumptions...).

I found that $p(^DD(2005.2,22700,0),^,4) = 7;1
I didn't want my data stored in note 7, so changed this to 22700;1

Now, when I use VPE data dictionary browser, it looks fine (shows
22700;1).  And when I go to enter data in with Fileman, it is
fine--the file goes in, and when I come back to edit it again it is
still there..
But when I do I do an INQUIRE of the data I added, it doesn't show.
And when I do the LIST FILE ATTRIBUTES, and in GLOBAL MAP listing
format, it still shows the old 7;1

So apparently the node;piece is stored in more than one location.
Any idea where the other location is?

Thanks
Kevin


---
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members



---
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


RE: [Hardhats-members] Data dictionary question...

2005-07-13 Thread Aylesworth Marc A Ctr AFRL/IFSE
Developers always prefer elegant solutions to the brute force of the hammer
it is in the blood.

Thanks

Marc Aylesworth

C3I Associates 

AFRL/IFSE

Joint Battlespace Infosphere Team

525 Brooks Rd

Rome, NY 13441-4505

Tel:315.330.2422

Fax:315.330.7009

Email: [EMAIL PROTECTED]


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Thurman
Pedigo
Sent: Tuesday, July 12, 2005 10:37 PM
To: hardhats-members@lists.sourceforge.net
Subject: RE: [Hardhats-members] Data dictionary question...

This speaks volumes. I can get what I wannt from FileMan, though it's a
greenscreen telnet program. The general public think it is useless if it's
not MADISON AVENUE FANCY GLOSSY. New York and Hollywood have long
tentacles. 

thurman

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:hardhats-
 [EMAIL PROTECTED] On Behalf Of Kevin Toppenberg
 Sent: Tuesday, July 12, 2005 2:44 PM
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question...
 
 Isn't if funny how we like things to not just to do
 the job, but to also be beautiful?  If your code
 gets the job done, then its OK with me.. :-)
 
 Kevin
 
 --- Gregory Woodhouse
 [EMAIL PROTECTED] wrote:
 
  Perhaps the worst thing is that back in the main
  Triton class, I have
  code like this.
 
 
 
   void setConnected(boolean isConnected) {
   l_connected = isConnected;
   if (l_connected) {
   mi_login.setEnabled(false);
   mi_logout.setEnabled(true);
   } else {
   mi_login.setEnabled(true);
 
  mi_logout.setEnabled(false);
   }
   }
 
   boolean isConnected() {
   return(l_connected);
   }
 
  All this does is toggle the connected state, and
  enables/disables
  menu items accordingly. I really, really don't like
  this design.
 
  ===
  Gregory Woodhouse
  [EMAIL PROTECTED]
 
  Nothing is as powerful than an idea
  whose time has come.
  -- Victor Hugo
 
 
  On Jul 12, 2005, at 5:49 AM, Kevin Toppenberg wrote:
 
   I've done very little with java, so let me feel my
  way
   here.
  
   I assume that function public LoginDialog is the
   constructor for class LoginDialog.  I see Frame
  passed
   as a parameter to the constructor, but I don't see
   that you use it.  What is it doing?
  
   Kevin
  
  
   --- Gregory Woodhouse
   [EMAIL PROTECTED] wrote:
  
  
   Well, here's some code I wrote to implement a
  login
   dialog (not that
   I'm all that proud of it -- I think it's ugly).
  You
   can see that this
   is exactly how the reference passed to the
   constructor is used.
  
  
   import java.awt.*;
   import java.awt.event.*;
   import java.util.*;
   import javax.swing.*;
   import javax.swing.event.*;
   import javax.swing.border.*;
  
  
   public class LoginDialog extends JDialog {
  
private JButton l_loginButton;
private JButton l_cancelButton;
private Container l_content;
private Triton l_application;
  
public LoginDialog(Frame parent) {
super(parent, Login, true);
l_application = (Triton) parent;
  
   setDefaultCloseOperation(DISPOSE_ON_CLOSE);
l_content = getContentPane();
  
l_loginButton = new JButton(Log
   in);
  
  l_loginButton.addActionListener(new
   ActionListener() {
public void
   actionPerformed(ActionEvent ae) {
signIn();
  
  setVisible(false);
dispose();
}
});
  
l_cancelButton = new
   JButton(Cancel);
  
   l_cancelButton.addActionListener(new
   ActionListener() {
public void
   actionPerformed(ActionEvent ae) {
  
   l_application.setConnected(false);
  
  setVisible(false);
dispose();
}
});
  
JPanel p = new JPanel();
//p.setLayout(new
  GridLayout(2,1));
EmptyBorder empty = new
   EmptyBorder(0, 0, 0, 10);
p.setLayout(new
  GridBagLayout());
p.setBorder(new EmptyBorder(new
   Insets(5, 5, 5, 5)));
  
   getContentPane().add(BorderLayout.CENTER, p);
GridBagConstraints c = new
   GridBagConstraints();
c.insets = new Insets (2, 2, 2,
  2);
c.anchor =
  GridBagConstraints.WEST;
JLabel name_label = new
   JLabel(Login Name);
name_label.setBorder(empty);
c.gridwidth = 1;
c.weightx = 0.0;
p.add(name_label, c);
JTextField name = new
  JTextField();
c.gridx = 1; //position

Re: [Hardhats-members] Data dictionary question...

2005-07-13 Thread Richard G. DAVIS


 From: Cameron Schlehuber [EMAIL PROTECTED]
 Reply-To: hardhats-members@lists.sourceforge.net
 Date: Tue, 12 Jul 2005 22:21:13 -0600
 To: hardhats-members@lists.sourceforge.net
 Subject: RE: [Hardhats-members] Data dictionary question...
 
 Indeed, the HealtheVet Person Service appears to me to be repeating some
 of the same limited constraints as were imposed over two decades ago (e.g.,
 ONLY real humans are being given consideration ... no test entries, no
 avatar IDs, etc.)  There are two approaches I've recommended from the
 beginning:  One is to have instead of a patient file, to have a file of
 objects of interest.  E.g. file 2 could contain any arbitrary object of
 interest, differentiated by identifying traits and other attributes (human,
 animal, vegetable, mineral, etc.)  Note that DHCP/VistA used in veterinary
 care has posed no problem with this approach.  Or two, use a fully qualified
 ID for each entity in the entity-role-act instances.  The latter is similar
 to what was developed with the so-called Variable Pointer ... which is how
 VistA lab handles the unlimited categories of objects of interest that VistA
 lab can deal with.  But I'd like to hear your approach Richard.
 

...

.

My approach is always the same--recognize the larger domain of which the
initial set is actually a subset.  That is what you propose for the PATIENT
file where objects of interest may be the universe set that contains all
PATIENTS and other subsets of interest as well.  The key issue becomes one
of 'art' not technology as the debate then shifts to determining the balance
point at which the domain of the file membership is finally, formally
decided.  Note that as the domain is enlarged, one gathers up complexity and
all the implications of that trend.  On the one hand we have the restrictive
PATIENT file domain as originally established, and on the other hand, a file
of objects of interest in a universe domain so grand that the entire system
of files is contained in the one single file!   ...and, in between a system
with some form of domain context switching.  (See the variable pointer
discussion below.)

Notice that FileMan can be seen as a single file itself.  FileMan could have
been fully recursive and completely self referential.  It could have been
the case that operations on 'classical' FileMan files would work equally
well on the FileMan itself.  Programmer API's for FileMan could have worked
just as well on the file that contains the data dictionary.

Thus, the inquiry that started this thread would have not been needed.  But,
alas, the MUMPS language did not include a mechanism to support recursion in
a practical way.  George did write %RCR to serve essential internal
functions within FileMan, but that was a stop-gap solution.  The performance
of %RCR was prohibitive and discouraged making FileMan fully self
referential.  

When I wrote the code in the Food Nutrient Analysis package that reads the
data dictionary as Kevin wants to do, my discussions with George Timson did
include a call for extensions to cover this kind of functionality.  George's
interests were focused elsewhere and there has always been only one George
Timson.:-( (...no sadder words of tongue nor pen than those--it
might have been.)

Your point #2 is I believe always needed as well.  As long as a system
design intends to limit attributes on file to those that represent
properties of the entities being described in the file, then the future will
always be at risk for cases where two or more real world instances can not
be distinguished based on their native attributes.  I would always include
for every entry in a given file a SYSTEM ASSIGNED attribute, where the
values of that attribute are everywhere unique.

The FileMan Internal Entry Number (IEN) represents such a system assigned
attribute.  However, the implementation of IEN was for specific technical
purposes that did not include the function I associate with point #2.  So, I
don't recognize FileMan IEN as a good example of a system assigned, uniquely
valued attribute.

As for the 'variable pointer', it has an ugliness that is exceeded only by
that of the NEW PERSON mess.  I see the requirement that the variable
pointer was intended to serve as a domain scope switch.  That is, a
mechanism that supports the function of changing the domain in which you are
operating.  This allows a large set of software tools to be enabled over a
wider range of contexts by context switching at runtime rather than at
system design time which brings us back to the list of laments Gregory
presented.  Maybe then getting dog blood and ice machine water into the lab
system becomes trivial.

Regards,

Richard.



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP

Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Kevin Toppenberg
I've done very little with java, so let me feel my way
here.

I assume that function public LoginDialog is the
constructor for class LoginDialog.  I see Frame passed
as a parameter to the constructor, but I don't see
that you use it.  What is it doing?

Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 Well, here's some code I wrote to implement a login
 dialog (not that  
 I'm all that proud of it -- I think it's ugly). You
 can see that this  
 is exactly how the reference passed to the
 constructor is used.
 
 
 import java.awt.*;
 import java.awt.event.*;
 import java.util.*;
 import javax.swing.*;
 import javax.swing.event.*;
 import javax.swing.border.*;
 
 
 public class LoginDialog extends JDialog {
 
  private JButton l_loginButton;
  private JButton l_cancelButton;
  private Container l_content;
  private Triton l_application;
 
  public LoginDialog(Frame parent) {
  super(parent, Login, true);
  l_application = (Triton) parent;
 
 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  l_content = getContentPane();
 
  l_loginButton = new JButton(Log
 in);
  l_loginButton.addActionListener(new
 ActionListener() {
  public void
 actionPerformed(ActionEvent ae) {
  signIn();
  setVisible(false);
  dispose();
  }
  });
 
  l_cancelButton = new
 JButton(Cancel);
 
 l_cancelButton.addActionListener(new
 ActionListener() {
  public void
 actionPerformed(ActionEvent ae) {
 
 l_application.setConnected(false);
  setVisible(false);
  dispose();
  }
  });
 
  JPanel p = new JPanel();
  //p.setLayout(new GridLayout(2,1));
  EmptyBorder empty = new
 EmptyBorder(0, 0, 0, 10);
  p.setLayout(new GridBagLayout());
  p.setBorder(new EmptyBorder(new
 Insets(5, 5, 5, 5)));
 
 getContentPane().add(BorderLayout.CENTER, p);
  GridBagConstraints c = new
 GridBagConstraints();
  c.insets = new Insets (2, 2, 2, 2);
  c.anchor = GridBagConstraints.WEST;
  JLabel name_label = new
 JLabel(Login Name);
  name_label.setBorder(empty);
  c.gridwidth = 1;
  c.weightx = 0.0;
  p.add(name_label, c);
  JTextField name = new JTextField();
  c.gridx = 1; //position
  c.weightx = 1.0;
  c.fill =
 GridBagConstraints.HORIZONTAL;
  p.add(name, c);
  JLabel password_label = new
 JLabel(Password);
  c.gridwidth = 1;
  c.gridx = 0;
  c.gridy = 1;
  c.weightx = 0.0;
  p.add(password_label, c);
  JPasswordField password = new
 JPasswordField();
  c.weightx = 1.0;
  c.gridx = 1;
  p.add(password, c);
  setSize(300,200);
  c.weightx = 0.0;
  c.gridx = 0;
  c.gridy = 2;
  p.add(l_loginButton, c);
  c.gridx = 1;
  c.gridy = 2;
  c.weightx = 0.0;
  c.fill= GridBagConstraints.NONE;
  p.add(l_cancelButton, c);
  }
 
 
  protected void signIn() {
  l_application.setConnected(true);
  }
 
  protected void signOut() {
  l_application.setConnected(false);
  }
 }
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 The whole of science is nothing more than a
 refinement
   of everyday thinking.  -- Albert Einstein
 
 
 On Jul 11, 2005, at 5:15 PM, Kevin Toppenberg wrote:
 
  I wonder if the reference to the JFrame is for a
  messaging system.  In Borland/Windows, a GUI
 object
  has both an 'owner' (one responsible for utimately
  destroying it) as well as a 'parent' (one from
 whom
  one receives windows messages).  I can't see why
 your
  objects would need to reference the JFrame (is
 this a
  graphic frame?) unless it was for messaging (i.e.
  time to repaint your area!)
 
  Kevin
 
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 

RE: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Aylesworth Marc A Ctr AFRL/IFSE
The Frame is an AWT Frame. This is only used to indicate that the Frame is
the parent of the dialog box so that the dialog box is positioned relative
to the parent and could not be hidden behind the parent and not be able to
be selected because dialog boxes are modal.

Thanks

Marc 


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Kevin
Toppenberg
Sent: Tuesday, July 12, 2005 8:49 AM
To: hardhats-members@lists.sourceforge.net
Subject: Re: [Hardhats-members] Data dictionary question...

I've done very little with java, so let me feel my way
here.

I assume that function public LoginDialog is the
constructor for class LoginDialog.  I see Frame passed
as a parameter to the constructor, but I don't see
that you use it.  What is it doing?

Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 Well, here's some code I wrote to implement a login
 dialog (not that  
 I'm all that proud of it -- I think it's ugly). You
 can see that this  
 is exactly how the reference passed to the
 constructor is used.
 
 
 import java.awt.*;
 import java.awt.event.*;
 import java.util.*;
 import javax.swing.*;
 import javax.swing.event.*;
 import javax.swing.border.*;
 
 
 public class LoginDialog extends JDialog {
 
  private JButton l_loginButton;
  private JButton l_cancelButton;
  private Container l_content;
  private Triton l_application;
 
  public LoginDialog(Frame parent) {
  super(parent, Login, true);
  l_application = (Triton) parent;
 
 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  l_content = getContentPane();
 
  l_loginButton = new JButton(Log
 in);
  l_loginButton.addActionListener(new
 ActionListener() {
  public void
 actionPerformed(ActionEvent ae) {
  signIn();
  setVisible(false);
  dispose();
  }
  });
 
  l_cancelButton = new
 JButton(Cancel);
 
 l_cancelButton.addActionListener(new
 ActionListener() {
  public void
 actionPerformed(ActionEvent ae) {
 
 l_application.setConnected(false);
  setVisible(false);
  dispose();
  }
  });
 
  JPanel p = new JPanel();
  //p.setLayout(new GridLayout(2,1));
  EmptyBorder empty = new
 EmptyBorder(0, 0, 0, 10);
  p.setLayout(new GridBagLayout());
  p.setBorder(new EmptyBorder(new
 Insets(5, 5, 5, 5)));
 
 getContentPane().add(BorderLayout.CENTER, p);
  GridBagConstraints c = new
 GridBagConstraints();
  c.insets = new Insets (2, 2, 2, 2);
  c.anchor = GridBagConstraints.WEST;
  JLabel name_label = new
 JLabel(Login Name);
  name_label.setBorder(empty);
  c.gridwidth = 1;
  c.weightx = 0.0;
  p.add(name_label, c);
  JTextField name = new JTextField();
  c.gridx = 1; //position
  c.weightx = 1.0;
  c.fill =
 GridBagConstraints.HORIZONTAL;
  p.add(name, c);
  JLabel password_label = new
 JLabel(Password);
  c.gridwidth = 1;
  c.gridx = 0;
  c.gridy = 1;
  c.weightx = 0.0;
  p.add(password_label, c);
  JPasswordField password = new
 JPasswordField();
  c.weightx = 1.0;
  c.gridx = 1;
  p.add(password, c);
  setSize(300,200);
  c.weightx = 0.0;
  c.gridx = 0;
  c.gridy = 2;
  p.add(l_loginButton, c);
  c.gridx = 1;
  c.gridy = 2;
  c.weightx = 0.0;
  c.fill= GridBagConstraints.NONE;
  p.add(l_cancelButton, c);
  }
 
 
  protected void signIn() {
  l_application.setConnected(true);
  }
 
  protected void signOut() {
  l_application.setConnected(false);
  }
 }
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 The whole of science is nothing more than a
 refinement
   of everyday thinking.  -- Albert Einstein
 
 
 On Jul 11, 2005, at 5:15 PM, Kevin Toppenberg wrote:
 
  I wonder if the reference to the JFrame is for a
  messaging system.  In Borland/Windows, a GUI
 object
  has both an 'owner' (one responsible for utimately
  destroying it) as well as a 'parent' (one from
 whom
  one receives windows messages).  I can't see why
 your
  objects would need to reference

RE: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Kevin Toppenberg
OK.  Thanks
Kevin


--- Aylesworth Marc A Ctr AFRL/IFSE
[EMAIL PROTECTED] wrote:

 The Frame is an AWT Frame. This is only used to
 indicate that the Frame is
 the parent of the dialog box so that the dialog box
 is positioned relative
 to the parent and could not be hidden behind the
 parent and not be able to
 be selected because dialog boxes are modal.
 
 Thanks
 
 Marc 
 
 
 -Original Message-
 From: [EMAIL PROTECTED]

[mailto:[EMAIL PROTECTED]
 On Behalf Of Kevin
 Toppenberg
 Sent: Tuesday, July 12, 2005 8:49 AM
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary
 question...
 
 I've done very little with java, so let me feel my
 way
 here.
 
 I assume that function public LoginDialog is the
 constructor for class LoginDialog.  I see Frame
 passed
 as a parameter to the constructor, but I don't see
 that you use it.  What is it doing?
 
 Kevin
 
 
 --- Gregory Woodhouse
 [EMAIL PROTECTED] wrote:
 
  Well, here's some code I wrote to implement a
 login
  dialog (not that  
  I'm all that proud of it -- I think it's ugly).
 You
  can see that this  
  is exactly how the reference passed to the
  constructor is used.
  
  
  import java.awt.*;
  import java.awt.event.*;
  import java.util.*;
  import javax.swing.*;
  import javax.swing.event.*;
  import javax.swing.border.*;
  
  
  public class LoginDialog extends JDialog {
  
   private JButton l_loginButton;
   private JButton l_cancelButton;
   private Container l_content;
   private Triton l_application;
  
   public LoginDialog(Frame parent) {
   super(parent, Login, true);
   l_application = (Triton) parent;
  
  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
   l_content = getContentPane();
  
   l_loginButton = new JButton(Log
  in);
  
 l_loginButton.addActionListener(new
  ActionListener() {
   public void
  actionPerformed(ActionEvent ae) {
   signIn();
  
 setVisible(false);
   dispose();
   }
   });
  
   l_cancelButton = new
  JButton(Cancel);
  
  l_cancelButton.addActionListener(new
  ActionListener() {
   public void
  actionPerformed(ActionEvent ae) {
  
  l_application.setConnected(false);
  
 setVisible(false);
   dispose();
   }
   });
  
   JPanel p = new JPanel();
   //p.setLayout(new
 GridLayout(2,1));
   EmptyBorder empty = new
  EmptyBorder(0, 0, 0, 10);
   p.setLayout(new GridBagLayout());
   p.setBorder(new EmptyBorder(new
  Insets(5, 5, 5, 5)));
  
  getContentPane().add(BorderLayout.CENTER, p);
   GridBagConstraints c = new
  GridBagConstraints();
   c.insets = new Insets (2, 2, 2,
 2);
   c.anchor =
 GridBagConstraints.WEST;
   JLabel name_label = new
  JLabel(Login Name);
   name_label.setBorder(empty);
   c.gridwidth = 1;
   c.weightx = 0.0;
   p.add(name_label, c);
   JTextField name = new
 JTextField();
   c.gridx = 1; //position
   c.weightx = 1.0;
   c.fill =
  GridBagConstraints.HORIZONTAL;
   p.add(name, c);
   JLabel password_label = new
  JLabel(Password);
   c.gridwidth = 1;
   c.gridx = 0;
   c.gridy = 1;
   c.weightx = 0.0;
   p.add(password_label, c);
   JPasswordField password = new
  JPasswordField();
   c.weightx = 1.0;
   c.gridx = 1;
   p.add(password, c);
   setSize(300,200);
   c.weightx = 0.0;
   c.gridx = 0;
   c.gridy = 2;
   p.add(l_loginButton, c);
   c.gridx = 1;
   c.gridy = 2;
   c.weightx = 0.0;
   c.fill= GridBagConstraints.NONE;
   p.add(l_cancelButton, c);
   }
  
  
   protected void signIn() {
   l_application.setConnected(true);
   }
  
   protected void signOut() {
  
 l_application.setConnected(false);
   }
  }
  
  ===
  Gregory Woodhouse
  [EMAIL PROTECTED]
  
  The whole of science is nothing more than a
  refinement
of everyday thinking.  -- Albert Einstein
  
  
  On Jul 11, 2005, at 5:15 PM, Kevin Toppenberg
 wrote:
  
   I wonder if the reference to the JFrame

Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread James Gray
As an old Mumpster who did all of his programming in languages other than 
Mumps before the advent of OO and as a result has tried to understand OO 
without knowing anything about C++, Java, etc. I miss what is being said.  I 
would like to know what you mean by tight coupling and poor cohesion we see 
in the Vista code base.

Jim Gray

- Original Message - 
From: Gregory Woodhouse [EMAIL PROTECTED]

To: hardhats-members@lists.sourceforge.net
Sent: Monday, July 11, 2005 5:24 PM
Subject: Re: [Hardhats-members] Data dictionary question...


My point of view is that OO can easily be done poorly (something that 
bothers me -- a lot), but it can b incredibly powerful when done  right. 
Rather than being an interesting aside, I see object  orientation, or 
something like it, as critical to the long range  success of Vista. The 
tight coupling and poor cohesion we see in the  Vista code base is way, 
way out of hand, and trying to move Vista  into new environments only 
makes the issue more acute. No, I don't  think for a moment that using an 
object oriented language will  somehow magically solve these problems, but 
I find it hard to  envision a solution that doesn't at least use basic 
ideas of object  orientation in a fundamental way.


In fact, I think it is part of the genius of Vista that it  anticipated OO 
technology to a surprising extent, and I doubt it  would have been as 
successful as it has been were that not the case.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Design quality doesn't ensure success, but design failure can ensure 
failure.


--Kent Beck

On Jul 11, 2005, at 3:46 PM, Kevin Toppenberg wrote:


Speaking of discipline, its pretty clear that one
can't tie the hands of the programmer.  It's like
Marty's analagy of the girlfriend and the motorcycle
again. :-)

But I don't see why garbage collection would be any
more of an issue with variables acting as object than
it would be with any other variable. A simple kill
would take them all out.  For those stored in ^TMP
etc, if one set up an infrastructure that
instantiated the objects for the programmer, then
they could be put in locations that would be
immediately obvious that they were no longer in use. A
$J node would be a first thought.

I'm sure you put quite a bit of thought into this
before.  I am just shooting from the hip.  It was just
a thought that was buzzing around my head.

But to be honest, I find the benefits of an OO
oriented language to be most helpful when I am either
working with a graphic environment, or when using a
library like Borland's VCL.  I don't know if I really
need OO in what I am doing now.

Kevin





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar 
happening

July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by 
HP,

AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members 




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
I save the reference as l_parent and then use it in the event  
handlers to invoke methods defined in the main application. The idea  
is that I might want to use it connect to MySQL, sign in to VistA, or  
something else. Anyway, the dialog isn't supposed to know what you're  
doing when you log in. The good thing about this design is that it's  
flexible. The bad thing is that it means that lot of application  
logic gets stuck in subclass of Frame. If you want to sound jaded,  
you can say that it is poor cohesion, if you don't, it violates the  
principle Do one thing, and do it well.

===
Gregory Woodhouse
[EMAIL PROTECTED]

Education is a progressive discovery
of our own ignorance.
--Will Durant


On Jul 12, 2005, at 5:49 AM, Kevin Toppenberg wrote:


I've done very little with java, so let me feel my way
here.

I assume that function public LoginDialog is the
constructor for class LoginDialog.  I see Frame passed
as a parameter to the constructor, but I don't see
that you use it.  What is it doing?





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
Perhaps the worst thing is that back in the main Triton class, I have  
code like this.




void setConnected(boolean isConnected) {
l_connected = isConnected;
if (l_connected) {
mi_login.setEnabled(false);
mi_logout.setEnabled(true);
} else {
mi_login.setEnabled(true);
mi_logout.setEnabled(false);
}
}

boolean isConnected() {
return(l_connected);
}

All this does is toggle the connected state, and enables/disables  
menu items accordingly. I really, really don't like this design.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Nothing is as powerful than an idea
whose time has come.
-- Victor Hugo


On Jul 12, 2005, at 5:49 AM, Kevin Toppenberg wrote:


I've done very little with java, so let me feel my way
here.

I assume that function public LoginDialog is the
constructor for class LoginDialog.  I see Frame passed
as a parameter to the constructor, but I don't see
that you use it.  What is it doing?

Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:



Well, here's some code I wrote to implement a login
dialog (not that
I'm all that proud of it -- I think it's ugly). You
can see that this
is exactly how the reference passed to the
constructor is used.


import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;


public class LoginDialog extends JDialog {

 private JButton l_loginButton;
 private JButton l_cancelButton;
 private Container l_content;
 private Triton l_application;

 public LoginDialog(Frame parent) {
 super(parent, Login, true);
 l_application = (Triton) parent;

setDefaultCloseOperation(DISPOSE_ON_CLOSE);
 l_content = getContentPane();

 l_loginButton = new JButton(Log
in);
 l_loginButton.addActionListener(new
ActionListener() {
 public void
actionPerformed(ActionEvent ae) {
 signIn();
 setVisible(false);
 dispose();
 }
 });

 l_cancelButton = new
JButton(Cancel);

l_cancelButton.addActionListener(new
ActionListener() {
 public void
actionPerformed(ActionEvent ae) {

l_application.setConnected(false);
 setVisible(false);
 dispose();
 }
 });

 JPanel p = new JPanel();
 //p.setLayout(new GridLayout(2,1));
 EmptyBorder empty = new
EmptyBorder(0, 0, 0, 10);
 p.setLayout(new GridBagLayout());
 p.setBorder(new EmptyBorder(new
Insets(5, 5, 5, 5)));

getContentPane().add(BorderLayout.CENTER, p);
 GridBagConstraints c = new
GridBagConstraints();
 c.insets = new Insets (2, 2, 2, 2);
 c.anchor = GridBagConstraints.WEST;
 JLabel name_label = new
JLabel(Login Name);
 name_label.setBorder(empty);
 c.gridwidth = 1;
 c.weightx = 0.0;
 p.add(name_label, c);
 JTextField name = new JTextField();
 c.gridx = 1; //position
 c.weightx = 1.0;
 c.fill =
GridBagConstraints.HORIZONTAL;
 p.add(name, c);
 JLabel password_label = new
JLabel(Password);
 c.gridwidth = 1;
 c.gridx = 0;
 c.gridy = 1;
 c.weightx = 0.0;
 p.add(password_label, c);
 JPasswordField password = new
JPasswordField();
 c.weightx = 1.0;
 c.gridx = 1;
 p.add(password, c);
 setSize(300,200);
 c.weightx = 0.0;
 c.gridx = 0;
 c.gridy = 2;
 p.add(l_loginButton, c);
 c.gridx = 1;
 c.gridy = 2;
 c.weightx = 0.0;
 c.fill= GridBagConstraints.NONE;
 p.add(l_cancelButton, c);
 }


 protected void signIn() {
 l_application.setConnected(true);
 }

 protected void signOut() {
 l_application.setConnected(false);
 }
}

===
Gregory Woodhouse
[EMAIL PROTECTED]

The whole of science is nothing more than a
refinement
  of everyday thinking.  -- Albert Einstein


On Jul 11, 2005, at 5:15 PM, Kevin Toppenberg wrote:



I wonder if the reference to the JFrame is for a
messaging system.  In Borland/Windows, a GUI


object


has both an 'owner' (one responsible for utimately
destroying it) as well as a 'parent' (one 

Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
It is certainly true that the infrastructure packages (Kernel,  
Fileman, etc.) do a good job of reducing the degree of coupling in  
Vista (part of its genius, IMO) but pick your favorite application.  
How easy it to rework it to use a different approach? How many Vista  
applications still use HL7 1.5 (notably Lab) because it's not  
practical to move over to 1.6? Why are people so interested in using  
Imaging to store scanned documents (something having absolutely  
nothing to do with medical imagining)? Why has it taken so much  
effort to figure out how to add new patients to a Vista system when  
it is not being used in a VA setting? Why is it so hard to adapt IB/ 
AR to the needs of non-VA users of Vista? Why is re-indexing file 2  
such a case of shoot self in foot? Why did identifying and  
resolving duplicates in this file require such a herculean effort?


===
Gregory Woodhouse
[EMAIL PROTECTED]

Without the requirement of mathematical aesthetics a great many  
discoveries would not have been made.

-- Albert Einstein



On Jul 12, 2005, at 9:16 AM, James Gray wrote:

As an old Mumpster who did all of his programming in languages  
other than Mumps before the advent of OO and as a result has tried  
to understand OO without knowing anything about C++, Java, etc. I  
miss what is being said.  I would like to know what you mean by  
tight coupling and poor cohesion we see in the Vista code base.

Jim Gray





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


RE: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Aylesworth Marc A Ctr AFRL/IFSE
Usually when I design a GUI I logically split it up and then put the code
that defines the controls in it and the GUI is comprised of those with
access functions that set/get information that is needed from those
components.

Thanks

Marc Aylesworth

C3I Associates 

AFRL/IFSE

Joint Battlespace Infosphere Team

525 Brooks Rd

Rome, NY 13441-4505

Tel:315.330.2422

Fax:315.330.7009

Email: [EMAIL PROTECTED]


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Gregory
Woodhouse
Sent: Tuesday, July 12, 2005 1:59 PM
To: hardhats-members@lists.sourceforge.net
Subject: Re: [Hardhats-members] Data dictionary question...

Right, and if that's all it were being used for, I wouldn't worry  
about it so much. The point of my example was that this reference was  
also being used to allow the dialog to communicate with the main  
application. This is common is Swing applications, but is it good  
design?

===
Gregory Woodhouse
[EMAIL PROTECTED]

Perfection is achieved, not when there is nothing more to add, but  
when there is nothing left to take away.
-- Antoine de Saint-Exupery

On Jul 12, 2005, at 6:58 AM, Aylesworth Marc A Ctr AFRL/IFSE wrote:

 The Frame is an AWT Frame. This is only used to indicate that the  
 Frame is
 the parent of the dialog box so that the dialog box is positioned  
 relative
 to the parent and could not be hidden behind the parent and not be  
 able to
 be selected because dialog boxes are modal.

 Thanks

 Marc




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
If I understand what you're saying (and I'm not at all sure I do),  
this isn't unlike the approach I took here. My firs step was to  
actually create the dialog (design the GUI) and then I went on to do  
the plumbing by using my reference to the main class to invoke  
whatever functions are appropriate. In this prototype, nothing  
interesting happens, but I have another version that creates a JDBC  
connection (and, in principle, it should also be possible to sign in  
to Vista). I don't like the approach because I have all kinds of  
unrelated methods in one class (kind of like the god class  
antipattern).


===
Gregory Woodhouse
[EMAIL PROTECTED]

The whole of science is nothing more than a refinement
 of everyday thinking.  -- Albert Einstein


On Jul 12, 2005, at 11:18 AM, Aylesworth Marc A Ctr AFRL/IFSE wrote:

Usually when I design a GUI I logically split it up and then put  
the code

that defines the controls in it and the GUI is comprised of those with
access functions that set/get information that is needed from those
components.






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


RE: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Aylesworth Marc A Ctr AFRL/IFSE
Kind of my, GUI is a collection of JPanels that have the actual GUI code in
it, disable button if this happens etc etc. Then I have main class that is
called GUI and contains all these JPanels. The JPanels have set/get
functions for the things that need it like table entries and textFields and
controls the functionality of the controls based on what is set or gotten.
The GUI class then has functions that set/set the fields on the JPanel.
Actually, after writing this it does sound basically the same.


Thanks

Marc Aylesworth

C3I Associates 

AFRL/IFSE

Joint Battlespace Infosphere Team

525 Brooks Rd

Rome, NY 13441-4505

Tel:315.330.2422

Fax:315.330.7009

Email: [EMAIL PROTECTED]


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Gregory
Woodhouse
Sent: Tuesday, July 12, 2005 2:38 PM
To: hardhats-members@lists.sourceforge.net
Subject: Re: [Hardhats-members] Data dictionary question...

If I understand what you're saying (and I'm not at all sure I do),  
this isn't unlike the approach I took here. My firs step was to  
actually create the dialog (design the GUI) and then I went on to do  
the plumbing by using my reference to the main class to invoke  
whatever functions are appropriate. In this prototype, nothing  
interesting happens, but I have another version that creates a JDBC  
connection (and, in principle, it should also be possible to sign in  
to Vista). I don't like the approach because I have all kinds of  
unrelated methods in one class (kind of like the god class  
antipattern).

===
Gregory Woodhouse
[EMAIL PROTECTED]

The whole of science is nothing more than a refinement
  of everyday thinking.  -- Albert Einstein


On Jul 12, 2005, at 11:18 AM, Aylesworth Marc A Ctr AFRL/IFSE wrote:

 Usually when I design a GUI I logically split it up and then put  
 the code
 that defines the controls in it and the GUI is comprised of those with
 access functions that set/get information that is needed from those
 components.





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread James Gray
I should have been more clear in my question.  I am more interested in what 
you mean by the terms tight coupling and poor cohesion.  I am aware of 
most of these specific problems in Vista (except for the the Lab one).  I am 
becoming more and more aware of the tangled mess in some of the RPC calls in 
the OR* namespace.  I assume that amounts to tight coupling.  I doubt I 
would know what poor or good cohesion was when I saw it.  I do know when the 
code is hard to read.


Jim Gray

- Original Message - 
From: Gregory Woodhouse [EMAIL PROTECTED]

To: hardhats-members@lists.sourceforge.net
Sent: Tuesday, July 12, 2005 11:54 AM
Subject: Re: [Hardhats-members] Data dictionary question...


It is certainly true that the infrastructure packages (Kernel,  Fileman, 
etc.) do a good job of reducing the degree of coupling in  Vista (part of 
its genius, IMO) but pick your favorite application.  How easy it to 
rework it to use a different approach? How many Vista  applications still 
use HL7 1.5 (notably Lab) because it's not  practical to move over to 1.6? 
Why are people so interested in using  Imaging to store scanned documents 
(something having absolutely  nothing to do with medical imagining)? Why 
has it taken so much  effort to figure out how to add new patients to a 
Vista system when  it is not being used in a VA setting? Why is it so hard 
to adapt IB/ AR to the needs of non-VA users of Vista? Why is re-indexing 
file 2  such a case of shoot self in foot? Why did identifying and 
resolving duplicates in this file require such a herculean effort?


===
Gregory Woodhouse
[EMAIL PROTECTED]

Without the requirement of mathematical aesthetics a great many 
discoveries would not have been made.

-- Albert Einstein



On Jul 12, 2005, at 9:16 AM, James Gray wrote:

As an old Mumpster who did all of his programming in languages  other 
than Mumps before the advent of OO and as a result has tried  to 
understand OO without knowing anything about C++, Java, etc. I  miss what 
is being said.  I would like to know what you mean by  tight coupling 
and poor cohesion we see in the Vista code base.

Jim Gray





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar 
happening

July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by 
HP,

AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members 




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
I'm actually struggling to come up with better definitions. These  
terms were possibly introduced by Erich Gamma et al. (the Gang of  
Four) in Design Patterns: Elements of Reusable Object-Oriented  
Software.


Tight coupling -- This means there are many interdependencies (direct  
and indirect) between different software components. think of it as  
big interfaces with high fan-in.


Poor cohesion - This means that the job a particular component does  
is poorly defined or that a component has many responsibilities that  
are not clearly related. (Could this be big implementations with high  
fan-out?)


===
Gregory Woodhouse
[EMAIL PROTECTED]

The policy of being too cautious is
the greatest risk of all.
--Jawaharlal Nehru


On Jul 12, 2005, at 12:06 PM, James Gray wrote:

I should have been more clear in my question.  I am more interested  
in what you mean by the terms tight coupling and poor  
cohesion.  I am aware of most of these specific problems in Vista  
(except for the the Lab one).  I am becoming more and more aware of  
the tangled mess in some of the RPC calls in the OR* namespace.  I  
assume that amounts to tight coupling.  I doubt I would know what  
poor or good cohesion was when I saw it.  I do know when the code  
is hard to read.






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


RE: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Aylesworth Marc A Ctr AFRL/IFSE

These terms go back to a style of creating software. It describes the Model,
View, Controller type of development. There is no connection between the
data, how it is controlled and how it is viewed. For example an integer
would be data. There could be more than on view for the data for example
there could be a slider where the position indicates the integer value,
there could also be a text field that has a character or String
representation of the integer value. There would be different controls for
each of these input methods for instance for the text field you would have
to make sure it was a numerical value and that it was not a float value etc
etc, the slider could just make the increments as integer and that could be
the only control. This is considered to be tightly coupled because the view
actually has the control built right in. The first is a description of being
loosely coupling because you can change the way it checks the inputs and the

View would have no idea that the implementation has changed. There are
places where the display of information is tightly incorporated into how it
is displayed to the user that is why it is so hard to put new front ends
onto the underlying M Database. If these layers were separated it would be
much easier to change how the information is displayed such as
roll-n-scroll, or screenMan or in CPRS or what ever any one wishes to show a
user.

Sorry for the long explaination but I thought it was necessary to explain
fully. The Sun Java swing tutorial has more information for those interested
here is the URL for models and there use in swing.
http://java.sun.com/docs/books/tutorial/uiswing/components/model.html

Marc Aylesworth

C3I Associates 

AFRL/IFSE

Joint Battlespace Infosphere Team

525 Brooks Rd

Rome, NY 13441-4505

Tel:315.330.2422

Fax:315.330.7009

Email: [EMAIL PROTECTED]


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Gregory
Woodhouse
Sent: Tuesday, July 12, 2005 3:21 PM
To: hardhats-members@lists.sourceforge.net
Subject: Re: [Hardhats-members] Data dictionary question...

I'm actually struggling to come up with better definitions. These  
terms were possibly introduced by Erich Gamma et al. (the Gang of  
Four) in Design Patterns: Elements of Reusable Object-Oriented  
Software.

Tight coupling -- This means there are many interdependencies (direct  
and indirect) between different software components. think of it as  
big interfaces with high fan-in.

Poor cohesion - This means that the job a particular component does  
is poorly defined or that a component has many responsibilities that  
are not clearly related. (Could this be big implementations with high  
fan-out?)

===
Gregory Woodhouse
[EMAIL PROTECTED]

The policy of being too cautious is
the greatest risk of all.
--Jawaharlal Nehru


On Jul 12, 2005, at 12:06 PM, James Gray wrote:

 I should have been more clear in my question.  I am more interested  
 in what you mean by the terms tight coupling and poor  
 cohesion.  I am aware of most of these specific problems in Vista  
 (except for the the Lab one).  I am becoming more and more aware of  
 the tangled mess in some of the RPC calls in the OR* namespace.  I  
 assume that amounts to tight coupling.  I doubt I would know what  
 poor or good cohesion was when I saw it.  I do know when the code  
 is hard to read.




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Kevin Toppenberg
Isn't if funny how we like things to not just to do
the job, but to also be beautiful?  If your code
gets the job done, then its OK with me.. :-)

Kevin

--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 Perhaps the worst thing is that back in the main
 Triton class, I have  
 code like this.
 
 
 
  void setConnected(boolean isConnected) {
  l_connected = isConnected;
  if (l_connected) {
  mi_login.setEnabled(false);
  mi_logout.setEnabled(true);
  } else {
  mi_login.setEnabled(true);
 
 mi_logout.setEnabled(false);
  }
  }
 
  boolean isConnected() {
  return(l_connected);
  }
 
 All this does is toggle the connected state, and
 enables/disables  
 menu items accordingly. I really, really don't like
 this design.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 Nothing is as powerful than an idea
 whose time has come.
 -- Victor Hugo
 
 
 On Jul 12, 2005, at 5:49 AM, Kevin Toppenberg wrote:
 
  I've done very little with java, so let me feel my
 way
  here.
 
  I assume that function public LoginDialog is the
  constructor for class LoginDialog.  I see Frame
 passed
  as a parameter to the constructor, but I don't see
  that you use it.  What is it doing?
 
  Kevin
 
 
  --- Gregory Woodhouse
  [EMAIL PROTECTED] wrote:
 
 
  Well, here's some code I wrote to implement a
 login
  dialog (not that
  I'm all that proud of it -- I think it's ugly).
 You
  can see that this
  is exactly how the reference passed to the
  constructor is used.
 
 
  import java.awt.*;
  import java.awt.event.*;
  import java.util.*;
  import javax.swing.*;
  import javax.swing.event.*;
  import javax.swing.border.*;
 
 
  public class LoginDialog extends JDialog {
 
   private JButton l_loginButton;
   private JButton l_cancelButton;
   private Container l_content;
   private Triton l_application;
 
   public LoginDialog(Frame parent) {
   super(parent, Login, true);
   l_application = (Triton) parent;
 
  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
   l_content = getContentPane();
 
   l_loginButton = new JButton(Log
  in);
  
 l_loginButton.addActionListener(new
  ActionListener() {
   public void
  actionPerformed(ActionEvent ae) {
   signIn();
  
 setVisible(false);
   dispose();
   }
   });
 
   l_cancelButton = new
  JButton(Cancel);
 
  l_cancelButton.addActionListener(new
  ActionListener() {
   public void
  actionPerformed(ActionEvent ae) {
 
  l_application.setConnected(false);
  
 setVisible(false);
   dispose();
   }
   });
 
   JPanel p = new JPanel();
   //p.setLayout(new
 GridLayout(2,1));
   EmptyBorder empty = new
  EmptyBorder(0, 0, 0, 10);
   p.setLayout(new
 GridBagLayout());
   p.setBorder(new EmptyBorder(new
  Insets(5, 5, 5, 5)));
 
  getContentPane().add(BorderLayout.CENTER, p);
   GridBagConstraints c = new
  GridBagConstraints();
   c.insets = new Insets (2, 2, 2,
 2);
   c.anchor =
 GridBagConstraints.WEST;
   JLabel name_label = new
  JLabel(Login Name);
   name_label.setBorder(empty);
   c.gridwidth = 1;
   c.weightx = 0.0;
   p.add(name_label, c);
   JTextField name = new
 JTextField();
   c.gridx = 1; //position
   c.weightx = 1.0;
   c.fill =
  GridBagConstraints.HORIZONTAL;
   p.add(name, c);
   JLabel password_label = new
  JLabel(Password);
   c.gridwidth = 1;
   c.gridx = 0;
   c.gridy = 1;
   c.weightx = 0.0;
   p.add(password_label, c);
   JPasswordField password = new
  JPasswordField();
   c.weightx = 1.0;
   c.gridx = 1;
   p.add(password, c);
   setSize(300,200);
   c.weightx = 0.0;
   c.gridx = 0;
   c.gridy = 2;
   p.add(l_loginButton, c);
   c.gridx = 1;
   c.gridy = 2;
   c.weightx = 0.0;
   c.fill= GridBagConstraints.NONE;
   p.add(l_cancelButton, c);
   }
 
 
   protected void signIn() {
  
 l_application.setConnected(true);
   }
 
 

Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Kevin Toppenberg
I know that OO programming tends to encourage
encapsulation, interfaces, and lego-block style
programming.  It makes it easier to switch and swap
code modules.

Kevin


--- James Gray [EMAIL PROTECTED] wrote:

 I should have been more clear in my question.  I am
 more interested in what 
 you mean by the terms tight coupling and poor
 cohesion.  I am aware of 
 most of these specific problems in Vista (except for
 the the Lab one).  I am 
 becoming more and more aware of the tangled mess in
 some of the RPC calls in 
 the OR* namespace.  I assume that amounts to tight
 coupling.  I doubt I 
 would know what poor or good cohesion was when I saw
 it.  I do know when the 
 code is hard to read.
 
 Jim Gray
 
 - Original Message - 
 From: Gregory Woodhouse
 [EMAIL PROTECTED]
 To: hardhats-members@lists.sourceforge.net
 Sent: Tuesday, July 12, 2005 11:54 AM
 Subject: Re: [Hardhats-members] Data dictionary
 question...
 
 
  It is certainly true that the infrastructure
 packages (Kernel,  Fileman, 
  etc.) do a good job of reducing the degree of
 coupling in  Vista (part of 
  its genius, IMO) but pick your favorite
 application.  How easy it to 
  rework it to use a different approach? How many
 Vista  applications still 
  use HL7 1.5 (notably Lab) because it's not 
 practical to move over to 1.6? 
  Why are people so interested in using  Imaging to
 store scanned documents 
  (something having absolutely  nothing to do with
 medical imagining)? Why 
  has it taken so much  effort to figure out how to
 add new patients to a 
  Vista system when  it is not being used in a VA
 setting? Why is it so hard 
  to adapt IB/ AR to the needs of non-VA users of
 Vista? Why is re-indexing 
  file 2  such a case of shoot self in foot? Why
 did identifying and 
  resolving duplicates in this file require such a
 herculean effort?
 
  ===
  Gregory Woodhouse
  [EMAIL PROTECTED]
 
  Without the requirement of mathematical
 aesthetics a great many 
  discoveries would not have been made.
  -- Albert Einstein
 
 
 
  On Jul 12, 2005, at 9:16 AM, James Gray wrote:
 
  As an old Mumpster who did all of his programming
 in languages  other 
  than Mumps before the advent of OO and as a
 result has tried  to 
  understand OO without knowing anything about C++,
 Java, etc. I  miss what 
  is being said.  I would like to know what you
 mean by  tight coupling 
  and poor cohesion we see in the Vista code base.
  Jim Gray
 
 
 
 
 

---
  This SF.Net email is sponsored by the 'Do More
 With Dual!' webinar 
  happening
  July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
  core and dual graphics technology at this free one
 hour event hosted by 
  HP,
  AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Nancy Anthracite
You know, Greg, it may be just as hopeless getting us docs on board with this 
ideal computer professional behavior as it is getting doctors in the US 
military to act like line officers.  Sometimes it is just easier to give up!

However, I admire that you are at least trying to straighten us up! 

On Tuesday 12 July 2005 04:44 pm, Kevin Toppenberg wrote:
 Isn't if funny how we like things to not just to do
 the job, but to also be beautiful?  If your code
 gets the job done, then its OK with me.. :-)

 Kevin

 --- Gregory Woodhouse

 [EMAIL PROTECTED] wrote:
  Perhaps the worst thing is that back in the main
  Triton class, I have
  code like this.
 
 
 
   void setConnected(boolean isConnected) {
   l_connected = isConnected;
   if (l_connected) {
   mi_login.setEnabled(false);
   mi_logout.setEnabled(true);
   } else {
   mi_login.setEnabled(true);
 
  mi_logout.setEnabled(false);
   }
   }
 
   boolean isConnected() {
   return(l_connected);
   }
 
  All this does is toggle the connected state, and
  enables/disables
  menu items accordingly. I really, really don't like
  this design.
 
  ===
  Gregory Woodhouse
  [EMAIL PROTECTED]
 
  Nothing is as powerful than an idea
  whose time has come.
  -- Victor Hugo
 
  On Jul 12, 2005, at 5:49 AM, Kevin Toppenberg wrote:
   I've done very little with java, so let me feel my
 
  way
 
   here.
  
   I assume that function public LoginDialog is the
   constructor for class LoginDialog.  I see Frame
 
  passed
 
   as a parameter to the constructor, but I don't see
   that you use it.  What is it doing?
  
   Kevin
  
  
   --- Gregory Woodhouse
  
   [EMAIL PROTECTED] wrote:
   Well, here's some code I wrote to implement a
 
  login
 
   dialog (not that
   I'm all that proud of it -- I think it's ugly).
 
  You
 
   can see that this
   is exactly how the reference passed to the
   constructor is used.
  
  
   import java.awt.*;
   import java.awt.event.*;
   import java.util.*;
   import javax.swing.*;
   import javax.swing.event.*;
   import javax.swing.border.*;
  
  
   public class LoginDialog extends JDialog {
  
private JButton l_loginButton;
private JButton l_cancelButton;
private Container l_content;
private Triton l_application;
  
public LoginDialog(Frame parent) {
super(parent, Login, true);
l_application = (Triton) parent;
  
   setDefaultCloseOperation(DISPOSE_ON_CLOSE);
l_content = getContentPane();
  
l_loginButton = new JButton(Log
   in);
 
  l_loginButton.addActionListener(new
 
   ActionListener() {
public void
   actionPerformed(ActionEvent ae) {
signIn();
 
  setVisible(false);
 
dispose();
}
});
  
l_cancelButton = new
   JButton(Cancel);
  
   l_cancelButton.addActionListener(new
   ActionListener() {
public void
   actionPerformed(ActionEvent ae) {
  
   l_application.setConnected(false);
 
  setVisible(false);
 
dispose();
}
});
  
JPanel p = new JPanel();
//p.setLayout(new
 
  GridLayout(2,1));
 
EmptyBorder empty = new
   EmptyBorder(0, 0, 0, 10);
p.setLayout(new
 
  GridBagLayout());
 
p.setBorder(new EmptyBorder(new
   Insets(5, 5, 5, 5)));
  
   getContentPane().add(BorderLayout.CENTER, p);
GridBagConstraints c = new
   GridBagConstraints();
c.insets = new Insets (2, 2, 2,
 
  2);
 
c.anchor =
 
  GridBagConstraints.WEST;
 
JLabel name_label = new
   JLabel(Login Name);
name_label.setBorder(empty);
c.gridwidth = 1;
c.weightx = 0.0;
p.add(name_label, c);
JTextField name = new
 
  JTextField();
 
c.gridx = 1; //position
c.weightx = 1.0;
c.fill =
   GridBagConstraints.HORIZONTAL;
p.add(name, c);
JLabel password_label = new
   JLabel(Password);
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 1;
c.weightx = 0.0;
p.add(password_label, c);
JPasswordField password = new
   JPasswordField();
c.weightx = 1.0;
c.gridx = 1;
p.add(password, c);
setSize(300,200);
c.weightx = 0.0;
   

Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
I don't think it's just an issue of being beautiful.At least in my  
experience, when something has seemed disquieting, either because it  
is not aesthetically pleasing or because it looks awkward or just  
doesn't feel right, that's been a good indication that there really  
is something wrong. I've learned to back off and not just forge ahead  
with something I know is wrong. Pursuing a solution that I  
subconsciously know is not the right one has bitten me in the past,  
even if I thought I might be able to save time with the course I was  
taking.


===
Gregory Woodhouse
[EMAIL PROTECTED]

The most profound technologies are those that disappear.
--Mark Weiser



On Jul 12, 2005, at 1:44 PM, Kevin Toppenberg wrote:


Isn't if funny how we like things to not just to do
the job, but to also be beautiful?  If your code
gets the job done, then its OK with me.. :-)

Kevin





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread A. Forrey

Nancy:
The task isnt hopeless but it also isnt trying to make docs (healthcare 
practitoners of all types) into information systems engineers (you are 
doing far better than I as a clinical laboratorian, for example) but 
rather sufficiently oriented to engage in productive dialog with such 
engineers. The key practitioner contribution lies in the conceptual 
content and how it is used in cognitive processing and how to describe 
this to their counterpart engineers; the reverse process involves getting 
information systems engineers in biomedical health informatics 
sufficiently aware to the background biomedical conceptual matrix that 
they know how to engineer (define,design, code, test,validate) systems that 
do what practitioners need. We've got some pretty talented participants 
in hardhats, WV and the VA and their associated suppliers. Historically 
the M community (with example by Octo Barnett to begin it all) has been an 
unusually innovative and collaborative bunch whose real story is yet to be 
told but just keep learning all you can and pushing to do the things we've 
all set out to contribute to and dont try to turn everytone into a 
comprehensive genius. We'll have a lot of fun and produce more than others 
can imagine and we can take tim out to celebrate one of these days! But 
dont Give UP!


On Tue, 12 Jul 2005, Nancy Anthracite wrote:


You know, Greg, it may be just as hopeless getting us docs on board with this
ideal computer professional behavior as it is getting doctors in the US
military to act like line officers.  Sometimes it is just easier to give up!

However, I admire that you are at least trying to straighten us up!

On Tuesday 12 July 2005 04:44 pm, Kevin Toppenberg wrote:

Isn't if funny how we like things to not just to do
the job, but to also be beautiful?  If your code
gets the job done, then its OK with me.. :-)

Kevin

--- Gregory Woodhouse

[EMAIL PROTECTED] wrote:

Perhaps the worst thing is that back in the main
Triton class, I have
code like this.



 void setConnected(boolean isConnected) {
 l_connected = isConnected;
 if (l_connected) {
 mi_login.setEnabled(false);
 mi_logout.setEnabled(true);
 } else {
 mi_login.setEnabled(true);

mi_logout.setEnabled(false);
 }
 }

 boolean isConnected() {
 return(l_connected);
 }

All this does is toggle the connected state, and
enables/disables
menu items accordingly. I really, really don't like
this design.

===
Gregory Woodhouse
[EMAIL PROTECTED]

Nothing is as powerful than an idea
whose time has come.
-- Victor Hugo

On Jul 12, 2005, at 5:49 AM, Kevin Toppenberg wrote:

I've done very little with java, so let me feel my


way


here.

I assume that function public LoginDialog is the
constructor for class LoginDialog.  I see Frame


passed


as a parameter to the constructor, but I don't see
that you use it.  What is it doing?

Kevin


--- Gregory Woodhouse

[EMAIL PROTECTED] wrote:

Well, here's some code I wrote to implement a


login


dialog (not that
I'm all that proud of it -- I think it's ugly).


You


can see that this
is exactly how the reference passed to the
constructor is used.


import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;


public class LoginDialog extends JDialog {

 private JButton l_loginButton;
 private JButton l_cancelButton;
 private Container l_content;
 private Triton l_application;

 public LoginDialog(Frame parent) {
 super(parent, Login, true);
 l_application = (Triton) parent;

setDefaultCloseOperation(DISPOSE_ON_CLOSE);
 l_content = getContentPane();

 l_loginButton = new JButton(Log
in);


l_loginButton.addActionListener(new


ActionListener() {
 public void
actionPerformed(ActionEvent ae) {
 signIn();


setVisible(false);


 dispose();
 }
 });

 l_cancelButton = new
JButton(Cancel);

l_cancelButton.addActionListener(new
ActionListener() {
 public void
actionPerformed(ActionEvent ae) {

l_application.setConnected(false);


setVisible(false);


 dispose();
 }
 });

 JPanel p = new JPanel();
 //p.setLayout(new


GridLayout(2,1));


 EmptyBorder empty = new
EmptyBorder(0, 0, 0, 10);
 p.setLayout(new


GridBagLayout());


 p.setBorder(new EmptyBorder(new
Insets(5, 5, 5, 5)));

getContentPane().add(BorderLayout.CENTER, p);
 GridBagConstraints c = new
GridBagConstraints();
 c.insets = new 

Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Ruben Safir
On Tue, 2005-07-12 at 17:29, Gregory Woodhouse wrote:
 Yes, but if you think about object oriented programming as just being  
 about encapsulation, then I think you've missed the point to some  
 extent. I like to think about it as programming in space rather than  
 programming in time. Another way of looking at it is that it isn't  
 just about decentralization of function (encapsulation) but  
 decentralization of responsibility. It's not just a matter of  
 creating components that know how to do a particular job, but of  
 creating components who only need be concerned about doing that one job.
 

Rather poetic and also all true of structured programming. (except for
the programming in space part which I'll be gracious enough to just
ignor :) )






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
I can't take credit for it, though. Though Meyer talks about design  
by contract, that's not quite the same thing. This particular  
approach to objects something I encountered in Design Patterns  
Explained by Alan Shalloway and James R. Trott, an excellent,  
thought provoking book.


I don't think I entirely agree with you when it comes to structured  
programming (or maybe I do?) Certainly, this is a good guiding  
principle, but you end up building knowledge of the larger context  
into parts of the program that you would rather not depend on this  
kind of thing. For example, I wrote a function to recursively  
traverse a file entry, visiting each field and subfield. the first  
parameter was the file number and the second the field number. For a  
file entry that's enough, butt when you descend into subfiles you  
have to worry about *which* subentry you are processing, so I added a  
third parameter that would only be used in recursive  calls and never  
used by the (outside) caller.


Or, to use a more traditional example, think of The Towers of Hanoi.  
Conceptually, a  recursive solution is all but trivial, but once  
you've moved one or more disks to the destination peg, your program  
has to pretend they are not there and solve the smaller subproblem.  
Unfortunately, your program doesn't only have to know it's solving  
the Towers of Hanoi puzzle, but it has to know that at each stage,  
certain disks have to be ignored.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Before one gets the right answer, one must ask the right question.  
-- S. Barry Cooper



On Jul 12, 2005, at 3:22 PM, Ruben Safir wrote:


On Tue, 2005-07-12 at 17:29, Gregory Woodhouse wrote:


Yes, but if you think about object oriented programming as just being
about encapsulation, then I think you've missed the point to some
extent. I like to think about it as programming in space rather than
programming in time. Another way of looking at it is that it isn't
just about decentralization of function (encapsulation) but
decentralization of responsibility. It's not just a matter of
creating components that know how to do a particular job, but of
creating components who only need be concerned about doing that  
one job.





Rather poetic and also all true of structured programming. (except for
the programming in space part which I'll be gracious enough to just
ignor :) )







---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Richard G. DAVIS
Well, Gregory, many folks miss the point about OOP.  There is a simple and
not too abstract characteristic of OOP that distinguishes it from classical
programming.  The rest of the putative differences between the two can be
recognized as differences in terminology--often just nomenclature, much of
which serves only the purpose of creating a justifying rationale for OOP.

What follows is a highly restricted explanation edited to make the text here
reasonable for an email discussion.

Consider a master program, one that is not invoked by any other process.
That master program can invoke one, or many, other programs as the program
developer chooses.

In classical programming, when the programmer inserts a phrase that invokes
another program, that is a deterministic construct.  The programmer knows
(or, at least 'should know') as the code is written exactly what program
will be executed when that phrase is used to control the process.

The sole distinction in object oriented programming is the possibility that
that same phrase that invokes another program is non-deterministic.  There
is always the 'possibility' that the program that is ultimately invoked may
be a program about which the programmer has little or no knowledge.  Even
the nomenclature used by the programmer in the master program to declare the
invoked program may not be that which is used to identify the program that
is ultimately executed.

In classical programming, when the master program invokes another program,
the 'message' path between the master program and the invoked program has a
length of ZERO.  One example: the invoked program may actually be embedded
into the master program by the compilation process, which certainly
qualifies as a message path of length zero.

In OOP, though this may not usually occur in practice today, the message
path length between the master program and the ultimately executed
subordinate program MAY be longer than zero length.  Moreover, the message
path length and ramifications may differ from one invocation of the same
named process to the next.  It is the fact that OOP allows the invocation
message path length to be greater than zero which given OOP the great power
and scope of effect that is at the heart of all else that is thought to be
fundamental to OOP.  From this simple elaboration of program structure and
functionality flows things like inheritance.  Inheritance is merely a
system of formalizations that describe how the message path is governed as
to length and ramifications.

If one restricts the message path length to 'zero' all the semantic and
functional characteristics of OOP collapse, and you are back in the
classical programming world.

Note that 'encapsulation' is not a distinctive feature of OOP, although this
organizational technique is given great emphasis in the context of OOP.
Encapsulation was used (maybe even developed initially) by the ancient
Egyptians to reduce the complexity of social systems to manageable
subdivisions.  Encapsulation in software engineering is just as feasible in
classical programming with subprogram invocations being entirely
deterministic and using a message path length of zero.

There are many other issues raised in the context of OOP that are mistakenly
presented as special to the domain of OOP, when they are much more general
and have a life that precedes modern OOP.

Regards, 

Richard.

 From: Gregory Woodhouse [EMAIL PROTECTED]
 Reply-To: hardhats-members@lists.sourceforge.net
 Date: Tue, 12 Jul 2005 14:29:34 -0700
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question...
 
 Yes, but if you think about object oriented programming as just being
 about encapsulation, then I think you've missed the point to some
 extent. I like to think about it as programming in space rather than
 programming in time. Another way of looking at it is that it isn't
 just about decentralization of function (encapsulation) but
 decentralization of responsibility. It's not just a matter of
 creating components that know how to do a particular job, but of
 creating components who only need be concerned about doing that one job.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]

...

.



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
HmmI'm going to have to respond to this in more detail later  
(after I've had more of a chance to digest it). It is intriguing,  
though, because I tend to think of nondeterminism as providing a  
theoretical basis for analyzing recursion. But you will recall that I  
compared OOP to programming space rather than time (the idea being  
that a problem is solved by building a network of communicating  
objects rather then creating a set of procedural rules of the form  
do this, and then this, and if some condition holds, this, etc.)  
But sorting provides a particularly simple case in which we see this  
same dynamic. There are well known recursive algorithms like  
quicksort, but happens if we unwind the recursion? Obviously, we end  
up with an explicit data structure that would otherwise be implicit  
in the call stack. To push this a bit further, the essence of data  
structures (like balanced trees, say) used in nonrecursive sorting  
algorithms is *locality*. The structure is not something that must be  
described globally, but the basic organizational rule involves just a  
node and some of its nearest neighbors. I'm struggling to come up  
with a good theoretical model here, but it seems to me that the  
principles of coupling and cohesion that I've been discussing are  
just locality in disguise.


===
Gregory Woodhouse
[EMAIL PROTECTED]

The policy of being too cautious is
the greatest risk of all.
--Jawaharlal Nehru


On Jul 12, 2005, at 6:41 PM, Richard G. DAVIS wrote:

Well, Gregory, many folks miss the point about OOP.  There is a  
simple and
not too abstract characteristic of OOP that distinguishes it from  
classical
programming.  The rest of the putative differences between the two  
can be
recognized as differences in terminology--often just nomenclature,  
much of
which serves only the purpose of creating a justifying rationale  
for OOP.


What follows is a highly restricted explanation edited to make the  
text here

reasonable for an email discussion.

Consider a master program, one that is not invoked by any other  
process.
That master program can invoke one, or many, other programs as the  
program

developer chooses.

In classical programming, when the programmer inserts a phrase that  
invokes
another program, that is a deterministic construct.  The programmer  
knows
(or, at least 'should know') as the code is written exactly what  
program

will be executed when that phrase is used to control the process.

The sole distinction in object oriented programming is the  
possibility that
that same phrase that invokes another program is non- 
deterministic.  There
is always the 'possibility' that the program that is ultimately  
invoked may
be a program about which the programmer has little or no  
knowledge.  Even
the nomenclature used by the programmer in the master program to  
declare the
invoked program may not be that which is used to identify the  
program that

is ultimately executed.

In classical programming, when the master program invokes another  
program,
the 'message' path between the master program and the invoked  
program has a
length of ZERO.  One example: the invoked program may actually be  
embedded

into the master program by the compilation process, which certainly
qualifies as a message path of length zero.

In OOP, though this may not usually occur in practice today, the  
message

path length between the master program and the ultimately executed
subordinate program MAY be longer than zero length.  Moreover, the  
message
path length and ramifications may differ from one invocation of the  
same
named process to the next.  It is the fact that OOP allows the  
invocation
message path length to be greater than zero which given OOP the  
great power
and scope of effect that is at the heart of all else that is  
thought to be
fundamental to OOP.  From this simple elaboration of program  
structure and
functionality flows things like inheritance.  Inheritance is  
merely a
system of formalizations that describe how the message path is  
governed as

to length and ramifications.

If one restricts the message path length to 'zero' all the semantic  
and

functional characteristics of OOP collapse, and you are back in the
classical programming world.

Note that 'encapsulation' is not a distinctive feature of OOP,  
although this
organizational technique is given great emphasis in the context of  
OOP.

Encapsulation was used (maybe even developed initially) by the ancient
Egyptians to reduce the complexity of social systems to manageable
subdivisions.  Encapsulation in software engineering is just as  
feasible in

classical programming with subprogram invocations being entirely
deterministic and using a message path length of zero.

There are many other issues raised in the context of OOP that are  
mistakenly
presented as special to the domain of OOP, when they are much more  
general

and have a life that precedes modern OOP.

Regards,

Richard.






Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
If I may be so presumptious as to paraphrase Dr. Davis' explanation  
here: When you create an object, you do not know in advance what  
messages may be sent to that object or when. the object only responds  
to the messages it receives. Think of an ant colony on the move. Each  
ant knows how to respond when its neighbor moves to the right or the  
left, but whatever intelligence there may be in an ant colony doesn't  
reside in the individual ants but, rather, in how they interact as a  
group. It's easier to build an ant, if you will, than it is to build  
an ant colony. Similarly, individual object or classes can be much  
more manageable than a single monolithic application.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Design quality doesn't ensure success, but design failure can ensure  
failure.


--Kent Beck

On Jul 12, 2005, at 6:41 PM, Richard G. DAVIS wrote:

The sole distinction in object oriented programming is the  
possibility that
that same phrase that invokes another program is non- 
deterministic.  There
is always the 'possibility' that the program that is ultimately  
invoked may
be a program about which the programmer has little or no  
knowledge.  Even
the nomenclature used by the programmer in the master program to  
declare the
invoked program may not be that which is used to identify the  
program that

is ultimately executed.





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Richard G. DAVIS
-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question...
 
 It is certainly true that the infrastructure packages (Kernel,
 Fileman, etc.) do a good job of reducing the degree of coupling in
 Vista (part of its genius, IMO) but pick your favorite application.
 How easy it to rework it to use a different approach? How many Vista
 applications still use HL7 1.5 (notably Lab) because it's not
 practical to move over to 1.6? Why are people so interested in using
 Imaging to store scanned documents (something having absolutely
 nothing to do with medical imagining)? Why has it taken so much
 effort to figure out how to add new patients to a Vista system when
 it is not being used in a VA setting? Why is it so hard to adapt IB/
 AR to the needs of non-VA users of Vista? Why is re-indexing file 2
 such a case of shoot self in foot? Why did identifying and
 resolving duplicates in this file require such a herculean effort?
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


RE: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Thurman Pedigo
This speaks volumes. I can get what I wannt from FileMan, though it's a
greenscreen telnet program. The general public think it is useless if it's
not MADISON AVENUE FANCY GLOSSY. New York and Hollywood have long
tentacles. 

thurman

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:hardhats-
 [EMAIL PROTECTED] On Behalf Of Kevin Toppenberg
 Sent: Tuesday, July 12, 2005 2:44 PM
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question...
 
 Isn't if funny how we like things to not just to do
 the job, but to also be beautiful?  If your code
 gets the job done, then its OK with me.. :-)
 
 Kevin
 
 --- Gregory Woodhouse
 [EMAIL PROTECTED] wrote:
 
  Perhaps the worst thing is that back in the main
  Triton class, I have
  code like this.
 
 
 
   void setConnected(boolean isConnected) {
   l_connected = isConnected;
   if (l_connected) {
   mi_login.setEnabled(false);
   mi_logout.setEnabled(true);
   } else {
   mi_login.setEnabled(true);
 
  mi_logout.setEnabled(false);
   }
   }
 
   boolean isConnected() {
   return(l_connected);
   }
 
  All this does is toggle the connected state, and
  enables/disables
  menu items accordingly. I really, really don't like
  this design.
 
  ===
  Gregory Woodhouse
  [EMAIL PROTECTED]
 
  Nothing is as powerful than an idea
  whose time has come.
  -- Victor Hugo
 
 
  On Jul 12, 2005, at 5:49 AM, Kevin Toppenberg wrote:
 
   I've done very little with java, so let me feel my
  way
   here.
  
   I assume that function public LoginDialog is the
   constructor for class LoginDialog.  I see Frame
  passed
   as a parameter to the constructor, but I don't see
   that you use it.  What is it doing?
  
   Kevin
  
  
   --- Gregory Woodhouse
   [EMAIL PROTECTED] wrote:
  
  
   Well, here's some code I wrote to implement a
  login
   dialog (not that
   I'm all that proud of it -- I think it's ugly).
  You
   can see that this
   is exactly how the reference passed to the
   constructor is used.
  
  
   import java.awt.*;
   import java.awt.event.*;
   import java.util.*;
   import javax.swing.*;
   import javax.swing.event.*;
   import javax.swing.border.*;
  
  
   public class LoginDialog extends JDialog {
  
private JButton l_loginButton;
private JButton l_cancelButton;
private Container l_content;
private Triton l_application;
  
public LoginDialog(Frame parent) {
super(parent, Login, true);
l_application = (Triton) parent;
  
   setDefaultCloseOperation(DISPOSE_ON_CLOSE);
l_content = getContentPane();
  
l_loginButton = new JButton(Log
   in);
  
  l_loginButton.addActionListener(new
   ActionListener() {
public void
   actionPerformed(ActionEvent ae) {
signIn();
  
  setVisible(false);
dispose();
}
});
  
l_cancelButton = new
   JButton(Cancel);
  
   l_cancelButton.addActionListener(new
   ActionListener() {
public void
   actionPerformed(ActionEvent ae) {
  
   l_application.setConnected(false);
  
  setVisible(false);
dispose();
}
});
  
JPanel p = new JPanel();
//p.setLayout(new
  GridLayout(2,1));
EmptyBorder empty = new
   EmptyBorder(0, 0, 0, 10);
p.setLayout(new
  GridBagLayout());
p.setBorder(new EmptyBorder(new
   Insets(5, 5, 5, 5)));
  
   getContentPane().add(BorderLayout.CENTER, p);
GridBagConstraints c = new
   GridBagConstraints();
c.insets = new Insets (2, 2, 2,
  2);
c.anchor =
  GridBagConstraints.WEST;
JLabel name_label = new
   JLabel(Login Name);
name_label.setBorder(empty);
c.gridwidth = 1;
c.weightx = 0.0;
p.add(name_label, c);
JTextField name = new
  JTextField();
c.gridx = 1; //position
c.weightx = 1.0;
c.fill =
   GridBagConstraints.HORIZONTAL;
p.add(name, c);
JLabel password_label = new
   JLabel(Password);
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 1;
c.weightx = 0.0;
p.add(password_label, c);
JPasswordField password = new
   JPasswordField();
c.weightx = 1.0;
c.gridx = 1

Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Richard G. DAVIS
Well, the paraphrase is apt, but misses my fundamental point.  You raise an
important behavior of complex systems that leads into the subject of
emergent properties--a matter for beyond the scope of this discussion.

The master program and the program developer do not know anything about
the 'message' process.  That process is fully, completely
hidden--encapsulated.  Thus, reading the Master Program phrase that invoked
another program does NOT tell the reader what will happen when the
invocation is acted upon by some final recipient program.  The invocation in
OOP is truly indeterminate, or at lease may be so.  That is what makes it
hard for me to discuss this with others.  At best, the reader of an OOP
Master program may develop a belief about what may happen, an conjecture at
best.  Consider an example--the effects of inheritance can not be known by
the reader of a Master Program in an OOP system based on the invoking
phrase--the call is indeterminate.

Some notes:

Message paths can ramify, they are not restricted to single thread.

The message process is where inheritance rules are implemented.

Some message processing may be driven by things like: which hardware capable
of acting on the message is least busy?

Because the message path can ramify, I prefer to speak about the message
switch mechanism that mediates between Master Programs and invoked
programs.  The term message agent comes into use here with a broader
semantic that message switch.

Regards, 

Richard.

 From: Gregory Woodhouse [EMAIL PROTECTED]
 Reply-To: hardhats-members@lists.sourceforge.net
 Date: Tue, 12 Jul 2005 19:25:00 -0700
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question...
 
 If I may be so presumptious as to paraphrase Dr. Davis' explanation
 here: When you create an object, you do not know in advance what
 messages may be sent to that object or when. the object only responds
 to the messages it receives. Think of an ant colony on the move. Each
 ant knows how to respond when its neighbor moves to the right or the
 left, but whatever intelligence there may be in an ant colony doesn't
 reside in the individual ants but, rather, in how they interact as a
 group. It's easier to build an ant, if you will, than it is to build
 an ant colony. Similarly, individual object or classes can be much
 more manageable than a single monolithic application.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]

...

.



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
I'm not entirely certain that I missed your point here. A good  
example of a non-deterministic program is


Select the element of array A having the greatest value

But that's cheating!  Or is it? I may not know which array element is  
the largest, but of all the actions involving selection of a single  
array element (at least) one will involve choosing the largest one,  
so this is a perfectly good non-deterministic program (more than one  
array element can have the same value). Of course, a real program  
might be


Get the value of the first element and store it as X
Get the largest element of the array obtained by removing the first  
element and store it as Y

If X Y return X, otherwise return Y

That's a real (deterministic) algorithm. The point here, of course,  
is that the non-determinism masks a recursive solution.


If I were going to implement the first solution, I might write a  
function get(i) that gets the value of the ith element of A, then my  
program would be something like


big = get(magic())

where magic() just happens to pick the right index for me (I don't  
know how).


To draw a geometric analogy, get() is local and magic() is global. I  
may not know about the global topology of the problem, but perhaps I  
can put together pieces involving only local knowledge that somehow  
fit together into a global solution. But, of course, my pieces don't  
know how they will be used. More precisely *I* have to create  
pieces that may be used in unpredictable ways, knowing full well that  
I can't say in advance what will happen to them.


But is this non-determinism? A good question. What I've attempted to  
do here is suggest that the more theoretical notion of non- 
determinism does actually fit well with the more practical notion of  
unpredictability.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Perfection is achieved, not when there is nothing more to add, but  
when there is nothing left to take away.

-- Antoine de Saint-Exupery

On Jul 12, 2005, at 7:54 PM, Richard G. DAVIS wrote:

Well, the paraphrase is apt, but misses my fundamental point.  You  
raise an

important behavior of complex systems that leads into the subject of
emergent properties--a matter for beyond the scope of this  
discussion.


The master program and the program developer do not know anything  
about

the 'message' process.  That process is fully, completely
hidden--encapsulated.  Thus, reading the Master Program phrase that  
invoked

another program does NOT tell the reader what will happen when the
invocation is acted upon by some final recipient program.  The  
invocation in
OOP is truly indeterminate, or at lease may be so.  That is what  
makes it
hard for me to discuss this with others.  At best, the reader of an  
OOP
Master program may develop a belief about what may happen, an  
conjecture at
best.  Consider an example--the effects of inheritance can not be  
known by

the reader of a Master Program in an OOP system based on the invoking
phrase--the call is indeterminate.

Some notes:

Message paths can ramify, they are not restricted to single thread.

The message process is where inheritance rules are implemented.

Some message processing may be driven by things like: which  
hardware capable

of acting on the message is least busy?

Because the message path can ramify, I prefer to speak about the  
message

switch mechanism that mediates between Master Programs and invoked
programs.  The term message agent comes into use here with a broader
semantic that message switch.

Regards,

Richard.






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread Gregory Woodhouse
This is a good example of lack of reusability (or better, poor  
encapsulation) at the design, rather than the implementation, level.  
I completely agree that when our design proves a poor match for an  
unanticipated usage scenario, we are helpless to address it (aside  
from ugly kludges or extensive rework). Design patterns represent one  
attempt to deal with this problem, but it is embarrassingly difficult  
to even come up with a simple definition of pattern. In fact, in  
their seminal work Gamma et al. (the Gang of Four) basically  
presented a catalog of patterns (after some preliminary discussion)  
and in effect said: They're things like these.


===
Gregory Woodhouse
[EMAIL PROTECTED]

The policy of being too cautious is
the greatest risk of all.
--Jawaharlal Nehru


On Jul 12, 2005, at 7:32 PM, Richard G. DAVIS wrote:

The example I usually choose to illustrate the issue is the VistA  
PATIENT
file.  Consider the LABORATORY system, and what happens when the  
Infectious
Disease personnel bring water samples to microbiology taken from  
the ice
machines in the food service areas.  When asked for the patient to  
be used

for the transaction, what does VistA do with ice machine data.

Or, consider the Research Service personnel who bring blood samples  
from
dogs and cats.  Again, VistA is helpless to deal with these  
instances of
samples that lie OUTSIDE the domain of what is implemented in the  
semantics

of the PATIENT file #2.





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread whitten
 
 I believe this is all fundamentally the result of constrained problem
 definition, more important, of constrained problem domain.
 
 The example I usually choose to illustrate the issue is the VistA PATIENT
 file.  Consider the LABORATORY system, and what happens when the Infectious
 Disease personnel bring water samples to microbiology taken from the ice
 machines in the food service areas.  When asked for the patient to be used
 for the transaction, what does VistA do with ice machine data.
 
 Or, consider the Research Service personnel who bring blood samples from
 dogs and cats.  Again, VistA is helpless to deal with these instances of
 samples that lie OUTSIDE the domain of what is implemented in the semantics
 of the PATIENT file #2.

Actually, VistA isn't helpless in those situations.
The VistA lab module doesn't depend on lab tests being done on the PATIENT
File. I'm not sure why you thought it does.
The LAB DATA file (#63) has a field named PARENT FILE (Field #.02) and a
field named NAME (Field #.03).  Any entry in any file in the system
could in theory (though some concepts are crazy) be the source of a
lab test.  That is why the LRDFN (Field #.01) is just a number, and
why the PATIENT file has an explicit pointer to the LRDFN rather than
just being DINUMed to the PATIENT File.

The Lab developers already thought of all those cases of needing to do
lab tests, and designed the LAB DATA file to handle them.

David

 
 The first order question preliminary to developing a file, ala FileMan,
 should be answered, understood and answered, before any further work is done
 in creating that data structure.  Specifically, what is this a file of?
 (poor english intended...)
 
 The fact is that the notion of a PATIENT file was so widespread and commonly
 held, that no effort was made to become obsessive about what it meant to say
 the PATIENT file.  If you raised the issues of dogs, cats, ice machines
 and other such entities, the groans, eyes averted skyward, and outcries of
 pain quickly quenched any motivation to pursue the issue, and to surely
 avoid raising such domain of files issues in the future.
 
 For those familiar with DHCP history, consider the mess surrounding the
 PERSON/NEW PERSON/EMPLOYEE/PROVIDER/PHYSICIAN/ files constellation.  NEW
 PERSON file   Doh!
 
 It is the acceptance of 'ad hoc' file definitions, and other associated
 semantics, and the willingness to ignore the importance of 'a priori' due
 diligence for database semantics that lurks in the background of all the
 examples you have presented Gregory.
 
 Even now, I suspect that this tendency is still very much present as the DVA
 tries to roll over its Healthcare IT system to the next generation.
 
 Regards,
 
 Richard.
 
 P. S.


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-12 Thread John McCormack
 subcommittee left that meeting and was never seen in the MDC
again to my knowledge.

BUT.  I believe that it is fundamentally an issue of the original MUMPS
language framers not asserting due diligence to clarify the problem domain
of the control of MUMPS process environments.  We would have started out
with some form of the NEW command, the pesky KILL command would have never
troubled us.

Why all those things happened?  ...because human thought is often
overwhelmed by local context.   ...sigh

R. D.



 


From: Gregory Woodhouse [EMAIL PROTECTED]
Reply-To: hardhats-members@lists.sourceforge.net
Date: Tue, 12 Jul 2005 10:54:55 -0700
To: hardhats-members@lists.sourceforge.net
Subject: Re: [Hardhats-members] Data dictionary question...

It is certainly true that the infrastructure packages (Kernel,
Fileman, etc.) do a good job of reducing the degree of coupling in
Vista (part of its genius, IMO) but pick your favorite application.
How easy it to rework it to use a different approach? How many Vista
applications still use HL7 1.5 (notably Lab) because it's not
practical to move over to 1.6? Why are people so interested in using
Imaging to store scanned documents (something having absolutely
nothing to do with medical imagining)? Why has it taken so much
effort to figure out how to add new patients to a Vista system when
it is not being used in a VA setting? Why is it so hard to adapt IB/
AR to the needs of non-VA users of Vista? Why is re-indexing file 2
such a case of shoot self in foot? Why did identifying and
resolving duplicates in this file require such a herculean effort?

===
Gregory Woodhouse
[EMAIL PROTECTED]
   





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members

 





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Robert H Dobbins/HOSPOPS/VET/UTIA

Kevin,

Here's are some Database Server/FM calls
that will return all fields in a file, and subfile: 

  S FILE=20101
  S MSG=
  S FDA=
  S IENS=**
  S FLAGS=
  D GETS^DIQ(1,FILE,IENS,FLAGS,FDA,MSG)


To get just the top-level fields from
the file:

  S FILE=20101
  S MSG=
  S FDA=
  S IENS=*
;just change this from 2 asterisks to 1 asterisk
  S FLAGS=
  D GETS^DIQ(1,FILE,IENS,FLAGS,FDA,MSG)


HTH,
Bob

---
Robert H. Dobbins
IT Administrator III -- Computer Operations
Univ. of Tenn. -- College of Veterinary Medicine
2407 River Drive, Rm. A108
Knoxville, TN 37996-4500
(865) 974-5593
[EMAIL PROTECTED]
Knowledge, Compassion, Discovery
---

Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
Actually, in GETS^DIQ, the first argument is the file and the second is the IENS. If you set the FIELD argument to "*", that means you want all the fields in a file, and if you set it to "**", it means you want all fields in the file, including all fields in its subfiles, etc. The IENS is kind of like a URL for a file entry, giving you a string of internal entry numbers (hence the name) you must follow to get to the (sub)entry (remembering that subfiles may be nested arbitrarily). The call looks like thisD GETS^DIQ(file,iens,fields,flags,target_root,message_root)(of which the first 3 arguments are required). ===Gregory Woodhouse[EMAIL PROTECTED]"The policy of being too cautious isthe greatest risk of all."--Jawaharlal Nehru On Jul 11, 2005, at 6:26 AM, Robert H Dobbins/HOSPOPS/VET/UTIA wrote:Kevin,  Here's are some Database Server/FM calls that will return all fields in a file, and subfile:         S FILE=20101      S MSG=""      S FDA=""      S IENS="**"      S FLAGS=""      D GETS^DIQ(1,FILE,IENS,FLAGS,"FDA","MSG")   To get just the top-level fields from the file:       S FILE=20101      S MSG=""      S FDA=""      S IENS="*"  ;just change this from 2 asterisks to 1 asterisk      S FLAGS=""      D GETS^DIQ(1,FILE,IENS,FLAGS,"FDA","MSG")   HTH, Bob  --- Robert H. Dobbins IT Administrator III -- Computer Operations Univ. of Tenn. -- College of Veterinary Medicine 2407 River Drive, Rm. A108 Knoxville, TN 37996-4500 (865) 974-5593 [EMAIL PROTECTED] "Knowledge, Compassion, Discovery" ---

Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
Well I am glad to see that this need has been filled
with a proper API.

I does seem a bit suspicious that it took over a week
for someone to come up with the appropriate function
(thanks Bob).  The names in the API are often less
than helpful.

Thanks everyone
Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 Actually, in GETS^DIQ, the first argument is the
 file and the second  
 is the IENS. If you set the FIELD argument to *,
 that means you  
 want all the fields in a file, and if you set it to
 **, it means  
 you want all fields in the file, including all
 fields in its  
 subfiles, etc. The IENS is kind of like a URL for a
 file entry,  
 giving you a string of internal entry numbers (hence
 the name) you  
 must follow to get to the (sub)entry (remembering
 that subfiles may  
 be nested arbitrarily). The call looks like this
 
 D

GETS^DIQ(file,iens,fields,flags,target_root,message_root)
 
 (of which the first 3 arguments are required).
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 The policy of being too cautious is
 the greatest risk of all.
 --Jawaharlal Nehru
 
 
 On Jul 11, 2005, at 6:26 AM, Robert H
 Dobbins/HOSPOPS/VET/UTIA wrote:
 
 
  Kevin,
 
  Here's are some Database Server/FM calls that will
 return all  
  fields in a file, and subfile:
 
   S FILE=20101
   S MSG=
   S FDA=
   S IENS=**
   S FLAGS=
   D GETS^DIQ(1,FILE,IENS,FLAGS,FDA,MSG)
 
 
  To get just the top-level fields from the file:
 
   S FILE=20101
   S MSG=
   S FDA=
   S IENS=*  ;just change this from 2
 asterisks to 1 asterisk
   S FLAGS=
   D GETS^DIQ(1,FILE,IENS,FLAGS,FDA,MSG)
 
 
  HTH,
  Bob
 
 

---
  Robert H. Dobbins
  IT Administrator III -- Computer Operations
  Univ. of Tenn. -- College of Veterinary Medicine
  2407 River Drive, Rm. A108
  Knoxville, TN 37996-4500
  (865) 974-5593
  [EMAIL PROTECTED]
  Knowledge, Compassion, Discovery
 

---
 
 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
Well, this is a little different from your stated requirement.  
Without knowing the fields in your file, you can use * or ** to  
get all the field values for a *file entry*. If you are serializing  
file entries using XML, that may be exactly what you want). But you  
asked for something else. You asked for a way to get a list of fields  
in a *file*. That's why it took so long.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Perfection is achieved, not when there is nothing more to add, but  
when there is nothing left to take away.

-- Antoine de Saint-Exupery

On Jul 11, 2005, at 7:48 AM, Kevin Toppenberg wrote:


Well I am glad to see that this need has been filled
with a proper API.

I does seem a bit suspicious that it took over a week
for someone to come up with the appropriate function
(thanks Bob).  The names in the API are often less
than helpful.

Thanks everyone
Kevin





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
I know I'm being hopelessly pedantic here (but maybe there is  
ultimately some point to it). If you take the point of view that  
files are classes and file entries are objects (an excellent way to  
think about Fileman, IMO), the difference becomes clear: GETS^DIQ  
gives you fairly comprehensive information about an object (even if  
you only know the name of its class), but you've been asking for a  
way to get information about a class, not an object of that class.  
Introspection is involved in each case, but in one case it is  
explicit, but in the other it is implicit in the objects ability to  
describe itself.  This basically comes down to the design principle  
(which I think is a good one) that objects are things with  
responsibilities and not merely behavior and data bundled up on a  
single package.


===
Gregory Woodhouse
[EMAIL PROTECTED]

The most profound technologies are those that disappear.
--Mark Weiser



On Jul 11, 2005, at 7:58 AM, Gregory Woodhouse wrote:

Well, this is a little different from your stated requirement.  
Without knowing the fields in your file, you can use * or ** to  
get all the field values for a *file entry*. If you are serializing  
file entries using XML, that may be exactly what you want). But you  
asked for something else. You asked for a way to get a list of  
fields in a *file*. That's why it took so long.







---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
A list of fields from a file IS what I want.  And this
GETS^DIQ is a bit off target in that it gets actual
values (meaning that there must be at least one record
in the file file for it to work).  But this would give
a list of the fields in the resulting array. 

Actually, now that I think about it, I doubt that it
will return the name of a field if there is no data in
that field.  So perhaps this function wouldn't work
after.

Perhaps there remains a need for another function in
the API to list the names of fields in file.

Thanks
Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 Well, this is a little different from your stated
 requirement.  
 Without knowing the fields in your file, you can use
 * or ** to  
 get all the field values for a *file entry*. If you
 are serializing  
 file entries using XML, that may be exactly what you
 want). But you  
 asked for something else. You asked for a way to get
 a list of fields  
 in a *file*. That's why it took so long.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 Perfection is achieved, not when there is nothing
 more to add, but  
 when there is nothing left to take away.
 -- Antoine de Saint-Exupery
 
 On Jul 11, 2005, at 7:48 AM, Kevin Toppenberg wrote:
 
  Well I am glad to see that this need has been
 filled
  with a proper API.
 
  I does seem a bit suspicious that it took over a
 week
  for someone to come up with the appropriate
 function
  (thanks Bob).  The names in the API are often less
  than helpful.
 
  Thanks everyone
  Kevin
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 





Sell on Yahoo! Auctions – no fees. Bid on great items.  
http://auctions.yahoo.com/


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
Speaking of classes, have you given thought to making
globals/arrays act like objects by putting code into
them, and merging to instantiate a new object?

Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 I know I'm being hopelessly pedantic here (but maybe
 there is  
 ultimately some point to it). If you take the point
 of view that  
 files are classes and file entries are objects (an
 excellent way to  
 think about Fileman, IMO), the difference becomes
 clear: GETS^DIQ  
 gives you fairly comprehensive information about an
 object (even if  
 you only know the name of its class), but you've
 been asking for a  
 way to get information about a class, not an object
 of that class.  
 Introspection is involved in each case, but in one
 case it is  
 explicit, but in the other it is implicit in the
 objects ability to  
 describe itself.  This basically comes down to the
 design principle  
 (which I think is a good one) that objects are
 things with  
 responsibilities and not merely behavior and data
 bundled up on a  
 single package.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 The most profound technologies are those that
 disappear.
 --Mark Weiser
 
 
 
 On Jul 11, 2005, at 7:58 AM, Gregory Woodhouse
 wrote:
 
  Well, this is a little different from your stated
 requirement.  
  Without knowing the fields in your file, you can
 use * or ** to  
  get all the field values for a *file entry*. If
 you are serializing  
  file entries using XML, that may be exactly what
 you want). But you  
  asked for something else. You asked for a way to
 get a list of  
  fields in a *file*. That's why it took so long.
 
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 




__ 
Discover Yahoo! 
Have fun online with music videos, cool games, IM and more. Check it out! 
http://discover.yahoo.com/online.html


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread James Gray
I think the issue is that you want to use a Fileman API on the file of 
files.  File 1 is the file of files.  I do not think that Fileman will care 
if the individual files have data in them.  If the fields have been defined 
for the individual files that is what the API's can retrieve for you.  When 
you are looking at file 1 then the individual file numbers are the IEN's of 
the individual records of the file of files.  You can also use Fileman API's 
on the data dictionary which has been called File 0.  However, you cannot 0 
(zero) as the file number. You have to use the actual global root.  I hope 
this makes sense.


Jim Gray

- Original Message - 
From: Kevin Toppenberg [EMAIL PROTECTED]

To: hardhats-members@lists.sourceforge.net
Sent: Monday, July 11, 2005 9:13 AM
Subject: Re: [Hardhats-members] Data dictionary question...



A list of fields from a file IS what I want.  And this
GETS^DIQ is a bit off target in that it gets actual
values (meaning that there must be at least one record
in the file file for it to work).  But this would give
a list of the fields in the resulting array.

Actually, now that I think about it, I doubt that it
will return the name of a field if there is no data in
that field.  So perhaps this function wouldn't work
after.

Perhaps there remains a need for another function in
the API to list the names of fields in file.

Thanks
Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:


Well, this is a little different from your stated
requirement.
Without knowing the fields in your file, you can use
* or ** to
get all the field values for a *file entry*. If you
are serializing
file entries using XML, that may be exactly what you
want). But you
asked for something else. You asked for a way to get
a list of fields
in a *file*. That's why it took so long.

===
Gregory Woodhouse
[EMAIL PROTECTED]

Perfection is achieved, not when there is nothing
more to add, but
when there is nothing left to take away.
-- Antoine de Saint-Exupery

On Jul 11, 2005, at 7:48 AM, Kevin Toppenberg wrote:

 Well I am glad to see that this need has been
filled
 with a proper API.

 I does seem a bit suspicious that it took over a
week
 for someone to come up with the appropriate
function
 (thanks Bob).  The names in the API are often less
 than helpful.

 Thanks everyone
 Kevin






---

This SF.Net email is sponsored by the 'Do More With
Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to
explore the latest in dual
core and dual graphics technology at this free one
hour event hosted by HP,
AMD, and NVIDIA.  To register visit
http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net


https://lists.sourceforge.net/lists/listinfo/hardhats-members








Sell on Yahoo! Auctions - no fees. Bid on great items.
http://auctions.yahoo.com/


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar 
happening

July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by 
HP,

AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members 




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread James Gray
But you can use the traditional Fileman calls on the DD.  Do the silent 
calls not work on the DD?


Jim Gray

- Original Message - 
From: Gregory Woodhouse [EMAIL PROTECTED]

To: hardhats-members@lists.sourceforge.net
Sent: Monday, July 11, 2005 3:39 PM
Subject: Re: [Hardhats-members] Data dictionary question...


But file 1 (the FILE file) doesn't store a list of fields, so it is  of no 
use in getting a list of fields. Now, if the DD itself were  really a 
file, then you'd be in business.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Design quality doesn't ensure success, but design failure can ensure 
failure.


--Kent Beck

On Jul 11, 2005, at 10:26 AM, James Gray wrote:

I think the issue is that you want to use a Fileman API on the file  of 
files.  File 1 is the file of files.  I do not think that  Fileman will 
care if the individual files have data in them.  If  the fields have been 
defined for the individual files that is what  the API's can retrieve for 
you.  When you are looking at file 1  then the individual file numbers 
are the IEN's of the individual  records of the file of files.  You can 
also use Fileman API's on  the data dictionary which has been called File 
0.  However, you  cannot 0 (zero) as the file number. You have to use the 
actual  global root.  I hope this makes sense.


Jim Gray





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar 
happening

July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by 
HP,

AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members 




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
So File 1 has a standard fileman structure?  I thought
I had been told that it defined the file structures,
thus one couldn't use Fileman on itself so to speak. 
I'll have to experiment with this.  Thanks for the
tip.

Kevin


--- James Gray [EMAIL PROTECTED] wrote:

 I think the issue is that you want to use a Fileman
 API on the file of 
 files.  File 1 is the file of files.  I do not think
 that Fileman will care 
 if the individual files have data in them.  If the
 fields have been defined 
 for the individual files that is what the API's can
 retrieve for you.  When 
 you are looking at file 1 then the individual file
 numbers are the IEN's of 
 the individual records of the file of files.  You
 can also use Fileman API's 
 on the data dictionary which has been called File 0.
  However, you cannot 0 
 (zero) as the file number. You have to use the
 actual global root.  I hope 
 this makes sense.
 
 Jim Gray
 
 - Original Message - 
 From: Kevin Toppenberg [EMAIL PROTECTED]
 To: hardhats-members@lists.sourceforge.net
 Sent: Monday, July 11, 2005 9:13 AM
 Subject: Re: [Hardhats-members] Data dictionary
 question...
 
 
 A list of fields from a file IS what I want.  And
 this
  GETS^DIQ is a bit off target in that it gets
 actual
  values (meaning that there must be at least one
 record
  in the file file for it to work).  But this would
 give
  a list of the fields in the resulting array.
 
  Actually, now that I think about it, I doubt that
 it
  will return the name of a field if there is no
 data in
  that field.  So perhaps this function wouldn't
 work
  after.
 
  Perhaps there remains a need for another function
 in
  the API to list the names of fields in file.
 
  Thanks
  Kevin
 
 
  --- Gregory Woodhouse
  [EMAIL PROTECTED] wrote:
 
  Well, this is a little different from your stated
  requirement.
  Without knowing the fields in your file, you can
 use
  * or ** to
  get all the field values for a *file entry*. If
 you
  are serializing
  file entries using XML, that may be exactly what
 you
  want). But you
  asked for something else. You asked for a way to
 get
  a list of fields
  in a *file*. That's why it took so long.
 
  ===
  Gregory Woodhouse
  [EMAIL PROTECTED]
 
  Perfection is achieved, not when there is
 nothing
  more to add, but
  when there is nothing left to take away.
  -- Antoine de Saint-Exupery
 
  On Jul 11, 2005, at 7:48 AM, Kevin Toppenberg
 wrote:
 
   Well I am glad to see that this need has been
  filled
   with a proper API.
  
   I does seem a bit suspicious that it took over
 a
  week
   for someone to come up with the appropriate
  function
   (thanks Bob).  The names in the API are often
 less
   than helpful.
  
   Thanks everyone
   Kevin
  
 
 
 
 
 

---
  This SF.Net email is sponsored by the 'Do More
 With
  Dual!' webinar happening
  July 14 at 8am PDT/11am EDT. We invite you to
  explore the latest in dual
  core and dual graphics technology at this free
 one
  hour event hosted by HP,
  AMD, and NVIDIA.  To register visit
  http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 
 
 
 
 
 
 
  Sell on Yahoo! Auctions - no fees. Bid on great
 items.
  http://auctions.yahoo.com/
 
 
 

---
  This SF.Net email is sponsored by the 'Do More
 With Dual!' webinar 
  happening
  July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
  core and dual graphics technology at this free one
 hour event hosted by 
  HP,
  AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 




__ 
Do you Yahoo!? 
Yahoo! Mail - Helps protect you from nasty viruses. 
http://promotions.yahoo.com/new_mail


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology

Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread steven mcphelan
To my knowledge there is no way to do what Kevin is asking by doing it using
standard FileMan APIs only.  There are standard Fileman APIs to get you:
1. All the attributes for a field  if you know the field number and file
number.
2. All the attributes for a file number

But I could not get any of the Fileman standard APIs to give me a list of
field numbers and field names when all you have is a file number.  I would
like to see that code posted here if it can be accomplished.  I am not
counting those screen scrape approach, i.e.., do a List File Attributes to a
file and then read that file back in a scrape out the field numbers and
names.

- Original Message - 
From: James Gray [EMAIL PROTECTED]
To: hardhats-members@lists.sourceforge.net
Sent: Monday, July 11, 2005 1:26 PM
Subject: Re: [Hardhats-members] Data dictionary question...


 I think the issue is that you want to use a Fileman API on the file of
 files.  File 1 is the file of files.  I do not think that Fileman will
care
 if the individual files have data in them.  If the fields have been
defined
 for the individual files that is what the API's can retrieve for you.
When
 you are looking at file 1 then the individual file numbers are the IEN's
of
 the individual records of the file of files.  You can also use Fileman
API's
 on the data dictionary which has been called File 0.  However, you cannot
0
 (zero) as the file number. You have to use the actual global root.  I hope
 this makes sense.

 Jim Gray

 - Original Message - 
 From: Kevin Toppenberg [EMAIL PROTECTED]
 To: hardhats-members@lists.sourceforge.net
 Sent: Monday, July 11, 2005 9:13 AM
 Subject: Re: [Hardhats-members] Data dictionary question...


 A list of fields from a file IS what I want.  And this
  GETS^DIQ is a bit off target in that it gets actual
  values (meaning that there must be at least one record
  in the file file for it to work).  But this would give
  a list of the fields in the resulting array.
 
  Actually, now that I think about it, I doubt that it
  will return the name of a field if there is no data in
  that field.  So perhaps this function wouldn't work
  after.
 
  Perhaps there remains a need for another function in
  the API to list the names of fields in file.
 
  Thanks
  Kevin



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread whitten
File #1 (ie: root : ^DIC( does have a standard fileman structure.
In fact, the data dictionary for each file also has a standard fileman
structure: for patient file the root ^DD(2,
for NEW PERSON file ^DD(200,
etc.
accessible with classic calls such as D ^DIC or D ^DIE

for example the captioned output of a field's definition 
is available using EN^DIQ (but it is rather ugly)

example of this using global root:=^DD(200, and field number .01
would be like a File with entry number .01

MUMPS S DIC=^DD(200,,DA=.01 D EN^DIQ

Running this code shows you the self-referential field names 
used in the Data Dictionary of the data dictionary itself.

Self-reflective data structures are really cool, in my opinion.
David

 
 So File 1 has a standard fileman structure?  I thought
 I had been told that it defined the file structures,
 thus one couldn't use Fileman on itself so to speak. 
 I'll have to experiment with this.  Thanks for the
 tip.
 
 Kevin
 
 
 --- James Gray [EMAIL PROTECTED] wrote:
 
  I think the issue is that you want to use a Fileman
  API on the file of 
  files.  File 1 is the file of files.  I do not think
  that Fileman will care 
  if the individual files have data in them.  If the
  fields have been defined 
  for the individual files that is what the API's can
  retrieve for you.  When 
  you are looking at file 1 then the individual file
  numbers are the IEN's of 
  the individual records of the file of files.  You
  can also use Fileman API's 
  on the data dictionary which has been called File 0.
   However, you cannot 0 
  (zero) as the file number. You have to use the
  actual global root.  I hope 
  this makes sense.
  
  Jim Gray
  
  - Original Message - 
  From: Kevin Toppenberg [EMAIL PROTECTED]
  To: hardhats-members@lists.sourceforge.net
  Sent: Monday, July 11, 2005 9:13 AM
  Subject: Re: [Hardhats-members] Data dictionary
  question...
  
  
  A list of fields from a file IS what I want.  And
  this
   GETS^DIQ is a bit off target in that it gets
  actual
   values (meaning that there must be at least one
  record
   in the file file for it to work).  But this would
  give
   a list of the fields in the resulting array.
  
   Actually, now that I think about it, I doubt that
  it
   will return the name of a field if there is no
  data in
   that field.  So perhaps this function wouldn't
  work
   after.
  
   Perhaps there remains a need for another function
  in
   the API to list the names of fields in file.
  
   Thanks
   Kevin
  
  
   --- Gregory Woodhouse
   [EMAIL PROTECTED] wrote:
  
   Well, this is a little different from your stated
   requirement.
   Without knowing the fields in your file, you can
  use
   * or ** to
   get all the field values for a *file entry*. If
  you
   are serializing
   file entries using XML, that may be exactly what
  you
   want). But you
   asked for something else. You asked for a way to
  get
   a list of fields
   in a *file*. That's why it took so long.
  
   ===
   Gregory Woodhouse
   [EMAIL PROTECTED]
  
   Perfection is achieved, not when there is
  nothing
   more to add, but
   when there is nothing left to take away.
   -- Antoine de Saint-Exupery
  
   On Jul 11, 2005, at 7:48 AM, Kevin Toppenberg
  wrote:
  
Well I am glad to see that this need has been
   filled
with a proper API.
   
I does seem a bit suspicious that it took over
  a
   week
for someone to come up with the appropriate
   function
(thanks Bob).  The names in the API are often
  less
than helpful.
   
Thanks everyone
Kevin
   
  
  
  
  
  
 
 ---
   This SF.Net email is sponsored by the 'Do More
  With
   Dual!' webinar happening
   July 14 at 8am PDT/11am EDT. We invite you to
   explore the latest in dual
   core and dual graphics technology at this free
  one
   hour event hosted by HP,
   AMD, and NVIDIA.  To register visit
   http://www.hp.com/go/dualwebinar
   ___
   Hardhats-members mailing list
   Hardhats-members@lists.sourceforge.net
  
  
 
 https://lists.sourceforge.net/lists/listinfo/hardhats-members
  
  
  
  
  
  
  
   Sell on Yahoo! Auctions - no fees. Bid on great
  items.
   http://auctions.yahoo.com/
  
  
  
 
 ---
   This SF.Net email is sponsored by the 'Do More
  With Dual!' webinar 
   happening
   July 14 at 8am PDT/11am EDT. We invite you to
  explore the latest in dual
   core and dual graphics technology at this free one
  hour event hosted by 
   HP,
   AMD, and NVIDIA.  To register visit
  http://www.hp.com/go/dualwebinar
   ___
   Hardhats-members mailing list
   Hardhats-members@lists.sourceforge.net
  
 
 https://lists.sourceforge.net/lists/listinfo/hardhats-members

Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread whitten
The DD as a whole is not structured as a file, so that each entry would be
organized as the definition for that file. 
(because there isn't a ^DD(0) node, nor are there any cross
references on the whole DD, but there are 0-nodes for each file.). 
But the root ^DD( followed by the file (or sub-file) number does
have the form of a file itself. So use of a $ORDER For loop as an
iterator could easily do most of what you want...

David

 
 But file 1 (the FILE file) doesn't store a list of fields, so it is  
 of no use in getting a list of fields. Now, if the DD itself were  
 really a file, then you'd be in business.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 Design quality doesn't ensure success, but design failure can ensure  
 failure.
 
 --Kent Beck
 
 On Jul 11, 2005, at 10:26 AM, James Gray wrote:
 
  I think the issue is that you want to use a Fileman API on the file  
  of files.  File 1 is the file of files.  I do not think that  
  Fileman will care if the individual files have data in them.  If  
  the fields have been defined for the individual files that is what  
  the API's can retrieve for you.  When you are looking at file 1  
  then the individual file numbers are the IEN's of the individual  
  records of the file of files.  You can also use Fileman API's on  
  the data dictionary which has been called File 0.  However, you  
  cannot 0 (zero) as the file number. You have to use the actual  
  global root.  I hope this makes sense.
 
  Jim Gray
 
 
 
 
 ---
 This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
 core and dual graphics technology at this free one hour event hosted by HP,
 AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members
 



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread whitten
The only problem I had with that kind of approach, when I played with
it years ago, was that there isn't an easy way to know what temporary
object get created by subroutine calls.

ie: you can do this
MERGE @(RESULT=_$$ObjectCreating^Call(possible,arguments))

with ObjectCreating^Call being code that creates a new object on
the fly as the result of the call. (perhaps using ^TMP($J, or something
like that as a temporary storage location.) 
The problem is recognizing which ones are still in use and which
ones need to be garbage collected.

MUMPS indirection (ie: extremely late-binding) is very useful, but
using it in a disciplined way is tricky at times.

David
 
 Speaking of classes, have you given thought to making
 globals/arrays act like objects by putting code into
 them, and merging to instantiate a new object?
 
 Kevin
 
 
 --- Gregory Woodhouse
 [EMAIL PROTECTED] wrote:
 
  I know I'm being hopelessly pedantic here (but maybe
  there is  
  ultimately some point to it). If you take the point
  of view that  
  files are classes and file entries are objects (an
  excellent way to  
  think about Fileman, IMO), the difference becomes
  clear: GETS^DIQ  
  gives you fairly comprehensive information about an
  object (even if  
  you only know the name of its class), but you've
  been asking for a  
  way to get information about a class, not an object
  of that class.  
  Introspection is involved in each case, but in one
  case it is  
  explicit, but in the other it is implicit in the
  objects ability to  
  describe itself.  This basically comes down to the
  design principle  
  (which I think is a good one) that objects are
  things with  
  responsibilities and not merely behavior and data
  bundled up on a  
  single package.
  
  ===
  Gregory Woodhouse
  [EMAIL PROTECTED]
  
  The most profound technologies are those that
  disappear.
  --Mark Weiser
  
  
  
  On Jul 11, 2005, at 7:58 AM, Gregory Woodhouse
  wrote:
  
   Well, this is a little different from your stated
  requirement.  
   Without knowing the fields in your file, you can
  use * or ** to  
   get all the field values for a *file entry*. If
  you are serializing  
   file entries using XML, that may be exactly what
  you want). But you  
   asked for something else. You asked for a way to
  get a list of  
   fields in a *file*. That's why it took so long.
  
  
  
  
  
 
 ---
  This SF.Net email is sponsored by the 'Do More With
  Dual!' webinar happening
  July 14 at 8am PDT/11am EDT. We invite you to
  explore the latest in dual
  core and dual graphics technology at this free one
  hour event hosted by HP,
  AMD, and NVIDIA.  To register visit
  http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 
 https://lists.sourceforge.net/lists/listinfo/hardhats-members
  
 
 
 
   
 __ 
 Discover Yahoo! 
 Have fun online with music videos, cool games, IM and more. Check it out! 
 http://discover.yahoo.com/online.html
 
 
 ---
 This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
 core and dual graphics technology at this free one hour event hosted by HP,
 AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members
 



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
Well, as I have learned more about M and Fileman, I
have found that it is often just easier to get the
information yourself rather than going through the
API's. I guess everyone else must be doing the same
thing, or this API would have been written already.

As per the code I posted before, the function to do
this is only a few lines long.

Kevin


--- steven mcphelan [EMAIL PROTECTED] wrote:

 To my knowledge there is no way to do what Kevin is
 asking by doing it using
 standard FileMan APIs only.  There are standard
 Fileman APIs to get you:
 1. All the attributes for a field  if you know the
 field number and file
 number.
 2. All the attributes for a file number
 
 But I could not get any of the Fileman standard APIs
 to give me a list of
 field numbers and field names when all you have is a
 file number.  I would
 like to see that code posted here if it can be
 accomplished.  I am not
 counting those screen scrape approach, i.e.., do a
 List File Attributes to a
 file and then read that file back in a scrape out
 the field numbers and
 names.
 
 - Original Message - 
 From: James Gray [EMAIL PROTECTED]
 To: hardhats-members@lists.sourceforge.net
 Sent: Monday, July 11, 2005 1:26 PM
 Subject: Re: [Hardhats-members] Data dictionary
 question...
 
 
  I think the issue is that you want to use a
 Fileman API on the file of
  files.  File 1 is the file of files.  I do not
 think that Fileman will
 care
  if the individual files have data in them.  If the
 fields have been
 defined
  for the individual files that is what the API's
 can retrieve for you.
 When
  you are looking at file 1 then the individual file
 numbers are the IEN's
 of
  the individual records of the file of files.  You
 can also use Fileman
 API's
  on the data dictionary which has been called File
 0.  However, you cannot
 0
  (zero) as the file number. You have to use the
 actual global root.  I hope
  this makes sense.
 
  Jim Gray
 
  - Original Message - 
  From: Kevin Toppenberg [EMAIL PROTECTED]
  To: hardhats-members@lists.sourceforge.net
  Sent: Monday, July 11, 2005 9:13 AM
  Subject: Re: [Hardhats-members] Data dictionary
 question...
 
 
  A list of fields from a file IS what I want.  And
 this
   GETS^DIQ is a bit off target in that it gets
 actual
   values (meaning that there must be at least one
 record
   in the file file for it to work).  But this
 would give
   a list of the fields in the resulting array.
  
   Actually, now that I think about it, I doubt
 that it
   will return the name of a field if there is no
 data in
   that field.  So perhaps this function wouldn't
 work
   after.
  
   Perhaps there remains a need for another
 function in
   the API to list the names of fields in file.
  
   Thanks
   Kevin
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread whitten
When I've needed to do it, I have just written the few
lines going through the B cross reference of the ^DD(Filenumber,
root. It does keep one from dynamically creating fields
on the fly, and makes the list of fields in a file static,
I guess. Perhaps if we had an API call, we would be able
to over-ride it and make dynamic fields etc

David

 
 Well, as I have learned more about M and Fileman, I
 have found that it is often just easier to get the
 information yourself rather than going through the
 API's. I guess everyone else must be doing the same
 thing, or this API would have been written already.
 
 As per the code I posted before, the function to do
 this is only a few lines long.
 
 Kevin
 
 
 --- steven mcphelan [EMAIL PROTECTED] wrote:
 
  To my knowledge there is no way to do what Kevin is
  asking by doing it using
  standard FileMan APIs only.  There are standard
  Fileman APIs to get you:
  1. All the attributes for a field  if you know the
  field number and file
  number.
  2. All the attributes for a file number
  
  But I could not get any of the Fileman standard APIs
  to give me a list of
  field numbers and field names when all you have is a
  file number.  I would
  like to see that code posted here if it can be
  accomplished.  I am not
  counting those screen scrape approach, i.e.., do a
  List File Attributes to a
  file and then read that file back in a scrape out
  the field numbers and
  names.
  
  - Original Message - 
  From: James Gray [EMAIL PROTECTED]
  To: hardhats-members@lists.sourceforge.net
  Sent: Monday, July 11, 2005 1:26 PM
  Subject: Re: [Hardhats-members] Data dictionary
  question...
  
  
   I think the issue is that you want to use a
  Fileman API on the file of
   files.  File 1 is the file of files.  I do not
  think that Fileman will
  care
   if the individual files have data in them.  If the
  fields have been
  defined
   for the individual files that is what the API's
  can retrieve for you.
  When
   you are looking at file 1 then the individual file
  numbers are the IEN's
  of
   the individual records of the file of files.  You
  can also use Fileman
  API's
   on the data dictionary which has been called File
  0.  However, you cannot
  0
   (zero) as the file number. You have to use the
  actual global root.  I hope
   this makes sense.
  
   Jim Gray
  
   - Original Message - 
   From: Kevin Toppenberg [EMAIL PROTECTED]
   To: hardhats-members@lists.sourceforge.net
   Sent: Monday, July 11, 2005 9:13 AM
   Subject: Re: [Hardhats-members] Data dictionary
  question...
  
  
   A list of fields from a file IS what I want.  And
  this
GETS^DIQ is a bit off target in that it gets
  actual
values (meaning that there must be at least one
  record
in the file file for it to work).  But this
  would give
a list of the fields in the resulting array.
   
Actually, now that I think about it, I doubt
  that it
will return the name of a field if there is no
  data in
that field.  So perhaps this function wouldn't
  work
after.
   
Perhaps there remains a need for another
  function in
the API to list the names of fields in file.
   
Thanks
Kevin
  
  
  
 
 ---
  This SF.Net email is sponsored by the 'Do More With
  Dual!' webinar happening
  July 14 at 8am PDT/11am EDT. We invite you to
  explore the latest in dual
  core and dual graphics technology at this free one
  hour event hosted by HP,
  AMD, and NVIDIA.  To register visit
  http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 
 https://lists.sourceforge.net/lists/listinfo/hardhats-members
  
 
 
 __
 Do You Yahoo!?
 Tired of spam?  Yahoo! Mail has the best spam protection around 
 http://mail.yahoo.com 
 
 
 ---
 This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
 core and dual graphics technology at this free one hour event hosted by HP,
 AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members
 



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net

Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
I recall that there was time when there was serious talk about  
creating a meta-DD. I'm sorry it never happened.

===
Gregory Woodhouse
[EMAIL PROTECTED]

Before one gets the right answer, one must ask the right question.  
-- S. Barry Cooper



On Jul 11, 2005, at 3:21 PM, [EMAIL PROTECTED] wrote:

The DD as a whole is not structured as a file, so that each entry  
would be

organized as the definition for that file.
(because there isn't a ^DD(0) node, nor are there any cross
references on the whole DD, but there are 0-nodes for each file.).
But the root ^DD( followed by the file (or sub-file) number does
have the form of a file itself. So use of a $ORDER For loop as an
iterator could easily do most of what you want...

David





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
I'm not entirely sure I understand your point here, but if you do  
intend to use array names as object references (which is what I  
generally do), and if you need a numeric object ID, then it seems  
reasonable to require that every object implement a getID() method.  
I'm not sure if non-persistent objects (any objects?) really need  
numeric IDs so long as the array references are well-defined and unique.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Perfection is achieved, not when there is nothing more to add, but  
when there is nothing left to take away.

-- Antoine de Saint-Exupery

On Jul 11, 2005, at 3:26 PM, [EMAIL PROTECTED] wrote:


The only problem I had with that kind of approach, when I played with
it years ago, was that there isn't an easy way to know what temporary
object get created by subroutine calls.

ie: you can do this
MERGE @(RESULT=_$$ObjectCreating^Call(possible,arguments))

with ObjectCreating^Call being code that creates a new object on
the fly as the result of the call. (perhaps using ^TMP($J, or  
something

like that as a temporary storage location.)
The problem is recognizing which ones are still in use and which
ones need to be garbage collected.

MUMPS indirection (ie: extremely late-binding) is very useful, but
using it in a disciplined way is tricky at times.





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
It is unusual for applications to need to do this, just as it is  
somewhat unusual to need to get a list of columns in a table, only  
because people using the file in their code generally know its layout  
ahead of time. However, I definitely do consider this a gap in Fileman.


===
Gregory Woodhouse
[EMAIL PROTECTED]

And the end of all our exploring
will be to arrive where we started
And know the place for the first time
-- T.S. Eliot



On Jul 11, 2005, at 3:27 PM, Kevin Toppenberg wrote:


Well, as I have learned more about M and Fileman, I
have found that it is often just easier to get the
information yourself rather than going through the
API's. I guess everyone else must be doing the same
thing, or this API would have been written already.

As per the code I posted before, the function to do
this is only a few lines long.




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
Speaking of discipline, its pretty clear that one
can't tie the hands of the programmer.  It's like
Marty's analagy of the girlfriend and the motorcycle
again. :-)

But I don't see why garbage collection would be any
more of an issue with variables acting as object than
it would be with any other variable. A simple kill
would take them all out.  For those stored in ^TMP
etc, if one set up an infrastructure that
instantiated the objects for the programmer, then
they could be put in locations that would be
immediately obvious that they were no longer in use. A
$J node would be a first thought.

I'm sure you put quite a bit of thought into this
before.  I am just shooting from the hip.  It was just
a thought that was buzzing around my head.

But to be honest, I find the benefits of an OO
oriented language to be most helpful when I am either
working with a graphic environment, or when using a
library like Borland's VCL.  I don't know if I really
need OO in what I am doing now.

Kevin


--- [EMAIL PROTECTED] wrote:

 The only problem I had with that kind of approach,
 when I played with
 it years ago, was that there isn't an easy way to
 know what temporary
 object get created by subroutine calls.
 
 ie: you can do this
 MERGE

@(RESULT=_$$ObjectCreating^Call(possible,arguments))
 
 with ObjectCreating^Call being code that creates a
 new object on
 the fly as the result of the call. (perhaps using
 ^TMP($J, or something
 like that as a temporary storage location.) 
 The problem is recognizing which ones are still in
 use and which
 ones need to be garbage collected.
 
 MUMPS indirection (ie: extremely late-binding) is
 very useful, but
 using it in a disciplined way is tricky at times.
 
 David
  
  Speaking of classes, have you given thought to
 making
  globals/arrays act like objects by putting code
 into
  them, and merging to instantiate a new object?
  
  Kevin
  
  
  --- Gregory Woodhouse
  [EMAIL PROTECTED] wrote:
  
   I know I'm being hopelessly pedantic here (but
 maybe
   there is  
   ultimately some point to it). If you take the
 point
   of view that  
   files are classes and file entries are objects
 (an
   excellent way to  
   think about Fileman, IMO), the difference
 becomes
   clear: GETS^DIQ  
   gives you fairly comprehensive information about
 an
   object (even if  
   you only know the name of its class), but you've
   been asking for a  
   way to get information about a class, not an
 object
   of that class.  
   Introspection is involved in each case, but in
 one
   case it is  
   explicit, but in the other it is implicit in the
   objects ability to  
   describe itself.  This basically comes down to
 the
   design principle  
   (which I think is a good one) that objects are
   things with  
   responsibilities and not merely behavior and
 data
   bundled up on a  
   single package.
   
   ===
   Gregory Woodhouse
   [EMAIL PROTECTED]
   
   The most profound technologies are those that
   disappear.
   --Mark Weiser
   
   
   
   On Jul 11, 2005, at 7:58 AM, Gregory Woodhouse
   wrote:
   
Well, this is a little different from your
 stated
   requirement.  
Without knowing the fields in your file, you
 can
   use * or ** to  
get all the field values for a *file entry*.
 If
   you are serializing  
file entries using XML, that may be exactly
 what
   you want). But you  
asked for something else. You asked for a way
 to
   get a list of  
fields in a *file*. That's why it took so
 long.
   
   
   
   
   
  
 

---
   This SF.Net email is sponsored by the 'Do More
 With
   Dual!' webinar happening
   July 14 at 8am PDT/11am EDT. We invite you to
   explore the latest in dual
   core and dual graphics technology at this free
 one
   hour event hosted by HP,
   AMD, and NVIDIA.  To register visit
   http://www.hp.com/go/dualwebinar
   ___
   Hardhats-members mailing list
   Hardhats-members@lists.sourceforge.net
  
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
   
  
  
  
  
  __ 
  Discover Yahoo! 
  Have fun online with music videos, cool games, IM
 and more. Check it out! 
  http://discover.yahoo.com/online.html
  
  
 

---
  This SF.Net email is sponsored by the 'Do More
 With Dual!' webinar happening
  July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
  core and dual graphics technology at this free one
 hour event hosted by HP,
  AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
  
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' 

Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
Whoosh that one went way over my head!

What are dynamic fields, and why would $ordering
through ^DD create a problem of generating extra
dynamic fields?

Thanks
Kevin

--- [EMAIL PROTECTED] wrote:

 When I've needed to do it, I have just written the
 few
 lines going through the B cross reference of the
 ^DD(Filenumber,
 root. It does keep one from dynamically creating
 fields
 on the fly, and makes the list of fields in a file
 static,
 I guess. Perhaps if we had an API call, we would be
 able
 to over-ride it and make dynamic fields etc
 
 David
 
  
  Well, as I have learned more about M and Fileman,
 I
  have found that it is often just easier to get
 the
  information yourself rather than going through
 the
  API's. I guess everyone else must be doing the
 same
  thing, or this API would have been written
 already.
  
  As per the code I posted before, the function to
 do
  this is only a few lines long.
  
  Kevin
  
  
  --- steven mcphelan [EMAIL PROTECTED]
 wrote:
  
   To my knowledge there is no way to do what Kevin
 is
   asking by doing it using
   standard FileMan APIs only.  There are standard
   Fileman APIs to get you:
   1. All the attributes for a field  if you know
 the
   field number and file
   number.
   2. All the attributes for a file number
   
   But I could not get any of the Fileman standard
 APIs
   to give me a list of
   field numbers and field names when all you have
 is a
   file number.  I would
   like to see that code posted here if it can be
   accomplished.  I am not
   counting those screen scrape approach, i.e.., do
 a
   List File Attributes to a
   file and then read that file back in a scrape
 out
   the field numbers and
   names.
   
   - Original Message - 
   From: James Gray [EMAIL PROTECTED]
   To: hardhats-members@lists.sourceforge.net
   Sent: Monday, July 11, 2005 1:26 PM
   Subject: Re: [Hardhats-members] Data dictionary
   question...
   
   
I think the issue is that you want to use a
   Fileman API on the file of
files.  File 1 is the file of files.  I do not
   think that Fileman will
   care
if the individual files have data in them.  If
 the
   fields have been
   defined
for the individual files that is what the
 API's
   can retrieve for you.
   When
you are looking at file 1 then the individual
 file
   numbers are the IEN's
   of
the individual records of the file of files. 
 You
   can also use Fileman
   API's
on the data dictionary which has been called
 File
   0.  However, you cannot
   0
(zero) as the file number. You have to use the
   actual global root.  I hope
this makes sense.
   
Jim Gray
   
- Original Message - 
From: Kevin Toppenberg [EMAIL PROTECTED]
To: hardhats-members@lists.sourceforge.net
Sent: Monday, July 11, 2005 9:13 AM
Subject: Re: [Hardhats-members] Data
 dictionary
   question...
   
   
A list of fields from a file IS what I want. 
 And
   this
 GETS^DIQ is a bit off target in that it gets
   actual
 values (meaning that there must be at least
 one
   record
 in the file file for it to work).  But this
   would give
 a list of the fields in the resulting array.

 Actually, now that I think about it, I doubt
   that it
 will return the name of a field if there is
 no
   data in
 that field.  So perhaps this function
 wouldn't
   work
 after.

 Perhaps there remains a need for another
   function in
 the API to list the names of fields in file.

 Thanks
 Kevin
   
   
   
  
 

---
   This SF.Net email is sponsored by the 'Do More
 With
   Dual!' webinar happening
   July 14 at 8am PDT/11am EDT. We invite you to
   explore the latest in dual
   core and dual graphics technology at this free
 one
   hour event hosted by HP,
   AMD, and NVIDIA.  To register visit
   http://www.hp.com/go/dualwebinar
   ___
   Hardhats-members mailing list
   Hardhats-members@lists.sourceforge.net
  
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
   
  
  
  __
  Do You Yahoo!?
  Tired of spam?  Yahoo! Mail has the best spam
 protection around 
  http://mail.yahoo.com 
  
  
 

---
  This SF.Net email is sponsored by the 'Do More
 With Dual!' webinar happening
  July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
  core and dual graphics technology at this free one
 hour event hosted by HP,
  AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
  
 
 
 

---
 This SF.Net email is sponsored by the 'Do More

Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
In Borland's VCL, every object that is created must
supply an Owner parameter.  Then, during creation,
that owner is notified of the new object, and they add
it to their list of objects they are responsible for. 
Then, whenever an object is deleted, its destructor
makes sure to destroy all the objects that it is
responsible for.  This helps prevent lost memory
allocations, though Borland also uses other methods as
well to ensure appropriate garbage collection.

I would think a similar system could be used for M
objects.  But the programmer would have to be sure
to call the object's destructor rather than just
killing it.

Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 I'm not entirely sure I understand your point here,
 but if you do  
 intend to use array names as object references
 (which is what I  
 generally do), and if you need a numeric object ID,
 then it seems  
 reasonable to require that every object implement a
 getID() method.  
 I'm not sure if non-persistent objects (any
 objects?) really need  
 numeric IDs so long as the array references are
 well-defined and unique.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 Perfection is achieved, not when there is nothing
 more to add, but  
 when there is nothing left to take away.
 -- Antoine de Saint-Exupery
 
 On Jul 11, 2005, at 3:26 PM, [EMAIL PROTECTED]
 wrote:
 
  The only problem I had with that kind of approach,
 when I played with
  it years ago, was that there isn't an easy way to
 know what temporary
  object get created by subroutine calls.
 
  ie: you can do this
  MERGE

@(RESULT=_$$ObjectCreating^Call(possible,arguments))
 
  with ObjectCreating^Call being code that creates a
 new object on
  the fly as the result of the call. (perhaps using
 ^TMP($J, or  
  something
  like that as a temporary storage location.)
  The problem is recognizing which ones are still in
 use and which
  ones need to be garbage collected.
 
  MUMPS indirection (ie: extremely late-binding) is
 very useful, but
  using it in a disciplined way is tricky at times.
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread whitten
And of course, if Rune was already implemented, the object's destructor
would already be called by the KILL command anyway, since it would be
part of the contract of the object with the language layer.

The problem with the owner idea is that you need to decide if you
are managing content or address. If a new object is created by the MERGE
command, then your Garbage collection is managing addresses (ie: names of
global references etc.) If a MERGE results in just another location where
the content is stored, then you need to keep track of the content changes.
Anyway, the owner idea is useful enough to remember when I dabble in dynamic
object manipulation again.

Fascinating stuff, but mostly at right angles to typical VistA development.

David

 
 In Borland's VCL, every object that is created must
 supply an Owner parameter.  Then, during creation,
 that owner is notified of the new object, and they add
 it to their list of objects they are responsible for. 
 Then, whenever an object is deleted, its destructor
 makes sure to destroy all the objects that it is
 responsible for.  This helps prevent lost memory
 allocations, though Borland also uses other methods as
 well to ensure appropriate garbage collection.
 
 I would think a similar system could be used for M
 objects.  But the programmer would have to be sure
 to call the object's destructor rather than just
 killing it.
 
 Kevin
 
 
 --- Gregory Woodhouse
 [EMAIL PROTECTED] wrote:
 
  I'm not entirely sure I understand your point here,
  but if you do  
  intend to use array names as object references
  (which is what I  
  generally do), and if you need a numeric object ID,
  then it seems  
  reasonable to require that every object implement a
  getID() method.  
  I'm not sure if non-persistent objects (any
  objects?) really need  
  numeric IDs so long as the array references are
  well-defined and unique.
  
  ===
  Gregory Woodhouse
  [EMAIL PROTECTED]
  
  Perfection is achieved, not when there is nothing
  more to add, but  
  when there is nothing left to take away.
  -- Antoine de Saint-Exupery
  
  On Jul 11, 2005, at 3:26 PM, [EMAIL PROTECTED]
  wrote:
  
   The only problem I had with that kind of approach,
  when I played with
   it years ago, was that there isn't an easy way to
  know what temporary
   object get created by subroutine calls.
  
   ie: you can do this
   MERGE
 
 @(RESULT=_$$ObjectCreating^Call(possible,arguments))
  
   with ObjectCreating^Call being code that creates a
  new object on
   the fly as the result of the call. (perhaps using
  ^TMP($J, or  
   something
   like that as a temporary storage location.)
   The problem is recognizing which ones are still in
  use and which
   ones need to be garbage collected.
  
   MUMPS indirection (ie: extremely late-binding) is
  very useful, but
   using it in a disciplined way is tricky at times.
  
  
  
  
 
 ---
  This SF.Net email is sponsored by the 'Do More With
  Dual!' webinar happening
  July 14 at 8am PDT/11am EDT. We invite you to
  explore the latest in dual
  core and dual graphics technology at this free one
  hour event hosted by HP,
  AMD, and NVIDIA.  To register visit
  http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 
 https://lists.sourceforge.net/lists/listinfo/hardhats-members
  
 
 
 __
 Do You Yahoo!?
 Tired of spam?  Yahoo! Mail has the best spam protection around 
 http://mail.yahoo.com 
 
 
 ---
 This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
 core and dual graphics technology at this free one hour event hosted by HP,
 AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members
 



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
Now, I guess I'm confused. Are we talking about maintaining a list of  
references to a given object? Off-hand, I don't see that a mark and  
sweep garbage collection strategy (like the one used in Java) would  
require this. What I do see as potentially  tricky is that runtime  
object would need to be qualified by job number, but that seems to be  
a technical detail.

===
Gregory Woodhouse
[EMAIL PROTECTED]

Before one gets the right answer, one must ask the right question.  
-- S. Barry Cooper



On Jul 11, 2005, at 4:02 PM, [EMAIL PROTECTED] wrote:

And of course, if Rune was already implemented, the object's  
destructor

would already be called by the KILL command anyway, since it would be
part of the contract of the object with the language layer.

The problem with the owner idea is that you need to decide if you
are managing content or address. If a new object is created by the  
MERGE
command, then your Garbage collection is managing addresses (ie:  
names of
global references etc.) If a MERGE results in just another location  
where
the content is stored, then you need to keep track of the content  
changes.
Anyway, the owner idea is useful enough to remember when I dabble  
in dynamic

object manipulation again.

Fascinating stuff, but mostly at right angles to typical VistA  
development.







---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
My point of view is that OO can easily be done poorly (something that  
bothers me -- a lot), but it can b incredibly powerful when done  
right. Rather than being an interesting aside, I see object  
orientation, or something like it, as critical to the long range  
success of Vista. The tight coupling and poor cohesion we see in the  
Vista code base is way, way out of hand, and trying to move Vista  
into new environments only makes the issue more acute. No, I don't  
think for a moment that using an object oriented language will  
somehow magically solve these problems, but I find it hard to  
envision a solution that doesn't at least use basic ideas of object  
orientation in a fundamental way.


In fact, I think it is part of the genius of Vista that it  
anticipated OO technology to a surprising extent, and I doubt it  
would have been as successful as it has been were that not the case.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Design quality doesn't ensure success, but design failure can ensure  
failure.


--Kent Beck

On Jul 11, 2005, at 3:46 PM, Kevin Toppenberg wrote:


Speaking of discipline, its pretty clear that one
can't tie the hands of the programmer.  It's like
Marty's analagy of the girlfriend and the motorcycle
again. :-)

But I don't see why garbage collection would be any
more of an issue with variables acting as object than
it would be with any other variable. A simple kill
would take them all out.  For those stored in ^TMP
etc, if one set up an infrastructure that
instantiated the objects for the programmer, then
they could be put in locations that would be
immediately obvious that they were no longer in use. A
$J node would be a first thought.

I'm sure you put quite a bit of thought into this
before.  I am just shooting from the hip.  It was just
a thought that was buzzing around my head.

But to be honest, I find the benefits of an OO
oriented language to be most helpful when I am either
working with a graphic environment, or when using a
library like Borland's VCL.  I don't know if I really
need OO in what I am doing now.

Kevin





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
This is a good example of a design pattern, and it is perhaps  
understandable that a pattern like this would be built into the  
language given the focus on GUI applications.  But one of the things  
I like least about Swing (the primary GUI framework for Java) is that  
you end up passing a reference to a JFrame to objects like dialogs.  
Sure, it's useful because there has to be some way of communicating  
what ever data you entered through the dialog back to the main  
application which, believe it or not, is usually an instance of  
JFrame (!) Ugh. Maybe I'm missing something obvious, but that seems  
to me like a completely unnatural way to use inheritance -- and I  
like Java.

===
Gregory Woodhouse
[EMAIL PROTECTED]

The whole of science is nothing more than a refinement
 of everyday thinking.  -- Albert Einstein


On Jul 11, 2005, at 3:55 PM, Kevin Toppenberg wrote:


In Borland's VCL, every object that is created must
supply an Owner parameter.  Then, during creation,
that owner is notified of the new object, and they add
it to their list of objects they are responsible for.
Then, whenever an object is deleted, its destructor
makes sure to destroy all the objects that it is
responsible for.  This helps prevent lost memory
allocations, though Borland also uses other methods as
well to ensure appropriate garbage collection.

I would think a similar system could be used for M
objects.  But the programmer would have to be sure
to call the object's destructor rather than just
killing it.

Kevin





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
Yeah, why didn't you guys get busy and get that Rune
up and going already?  :-)

When you talk about content vs. addresses, this is the
same concept in c/c++ as pointers vs. the actual
memory that was allocated.  Sure, anytime that memory
is freed, all pointers to it (and in M this would be
the name of the reference etc.) suddenly become
invalid.  Thus programmers have to be very careful
with their pointers, or the entire program goes south
in a big way.

So if I was going to implement this, I would have all
objects created through an instantiator, and
destroyed with a destructor.

Tell me what you think.  (Code below). I don't think I
have all the indirection syntax correct, but I maybe
you can get my idea.  I haven't developed how I would
implement object inheritence, but it wouldn't be too
much of an extension.

Kevin

;--
; new and delete functions below
;--

new(Type)
  new typeRef set typeRef=
  new defProc set defProc=$get(TblConstructor(Type))
  if defProc'= set [EMAIL PROTECTED]
  quit typeRef

delete(pRef)
  new Type set [EMAIL PROTECTED]@(TYPE)
  new killProc set killProc=$get(TblDestructor(Type))
  if killProc'= do
  . new ID set ID=$piece(pRef,(,2)
  . set ID=$piece(ID,),1)
  . set killProc=do _killProc_(_ID_)
  . xecute @killProc
  quit

;--
; Setup for available objects below
;--
Init()
  set TblConstructor(WIDGET)=defWidget
  set TblConstructor(GADGET)=defGadget
  set TblConstructor(SPROCKET)=defSproket
  set TblConstructor(LEVER)=defLever

  set TblDestructor(WIDGET)=killWidget
  set TblDestructor(GADGET)=killGadget
  set TblDestructor(SPROCKET)=killSproket
  set TblDestructor(LEVER)=killLever

  quit

;--
;Object Widget specif code below
;--

defWidget(New) ;A constructor for object Widget
  set oWIDGET(LAST ID)=$get(oWIDGET(LAST ID))+1
  new ID set ID=oWIDGET(LAST ID)
  set oWIDGET(INSTANCES,ID)=

  ;Here we define the default values for object vars
  set oWIDGET(ID,TYPE)=WIDGET
  set oWIDGET(ID,MyVar1)=0
  set oWIDGET(ID,MyVar2)=0
  set oWIDGET(ID,MyVar3)=0
  set oWIDGET(ID,Multiply)=wgtMultiply
  set oWIDGET(ID,Divide)=wgtDivide
  quit $name(oWIDGET(ID))

killWidget(ID)  ;A destructor for object Widget
  ;any needed clean up code would go here first.
  kill oWIDGET(ID)
  kill oWIDGET(INSTANCES,ID)
  quit
  
wgtMultiply(x,y)  ;Widget member function
  new result set result=x*y
  quit result

wgtDivide(x,y);Widget member function
  new result set result=x/y
  quit result

;--
;Main function below
;--

MyFunct()
  new pWidget  ;will store a name of object
  set pWidget=$$new(WIDGET)

  new done set done=0
  for  do  quit:(done)
  . new x,y
  . read input x: ,x,!
  . if x= set done=1 quit
  . read input y: ,y,!
  . if y= set done=1 quit
  . new fn set [EMAIL PROTECTED]@(Multiply)
  . write [EMAIL PROTECTED]@(x,y),! ;-- not sure if works(?)
  
  do $$delete(pWidget)

  write That all folks!,!

  quit

--- [EMAIL PROTECTED] wrote:

 And of course, if Rune was already implemented, the
 object's destructor
 would already be called by the KILL command anyway,
 since it would be
 part of the contract of the object with the language
 layer.
 
 The problem with the owner idea is that you need to
 decide if you
 are managing content or address. If a new object is
 created by the MERGE
 command, then your Garbage collection is managing
 addresses (ie: names of
 global references etc.) If a MERGE results in just
 another location where
 the content is stored, then you need to keep track
 of the content changes.
 Anyway, the owner idea is useful enough to remember
 when I dabble in dynamic
 object manipulation again.
 
 Fascinating stuff, but mostly at right angles to
 typical VistA development.
 
 David
 
  
  In Borland's VCL, every object that is created
 must
  supply an Owner parameter.  Then, during creation,
  that owner is notified of the new object, and they
 add
  it to their list of objects they are responsible
 for. 
  Then, whenever an object is deleted, its
 destructor
  makes sure to destroy all the objects that it is
  responsible for.  This helps prevent lost memory
  allocations, though Borland also uses other
 methods as
  well to ensure appropriate garbage collection.
  
  I would think a similar system could be used for M
  objects.  But the programmer would have to be
 sure
  to call the object's destructor rather than just
  killing it.
  
  Kevin
  
  
  --- Gregory Woodhouse
  [EMAIL PROTECTED] wrote:
  
   I'm not entirely sure I understand your point
 here,
   but if you do  
   intend to use array names as object references
   (which is what I  
   generally do), and if you need a numeric object
 ID,
   then it seems  
   reasonable to require that every 

Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Kevin Toppenberg
I wonder if the reference to the JFrame is for a
messaging system.  In Borland/Windows, a GUI object
has both an 'owner' (one responsible for utimately
destroying it) as well as a 'parent' (one from whom
one receives windows messages).  I can't see why your
objects would need to reference the JFrame (is this a
graphic frame?) unless it was for messaging (i.e.
time to repaint your area!)

Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 This is a good example of a design pattern, and it
 is perhaps  
 understandable that a pattern like this would be
 built into the  
 language given the focus on GUI applications.  But
 one of the things  
 I like least about Swing (the primary GUI framework
 for Java) is that  
 you end up passing a reference to a JFrame to
 objects like dialogs.  
 Sure, it's useful because there has to be some way
 of communicating  
 what ever data you entered through the dialog back
 to the main  
 application which, believe it or not, is usually an
 instance of  
 JFrame (!) Ugh. Maybe I'm missing something obvious,
 but that seems  
 to me like a completely unnatural way to use
 inheritance -- and I  
 like Java.
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 The whole of science is nothing more than a
 refinement
   of everyday thinking.  -- Albert Einstein
 
 
 On Jul 11, 2005, at 3:55 PM, Kevin Toppenberg wrote:
 
  In Borland's VCL, every object that is created
 must
  supply an Owner parameter.  Then, during creation,
  that owner is notified of the new object, and they
 add
  it to their list of objects they are responsible
 for.
  Then, whenever an object is deleted, its
 destructor
  makes sure to destroy all the objects that it is
  responsible for.  This helps prevent lost memory
  allocations, though Borland also uses other
 methods as
  well to ensure appropriate garbage collection.
 
  I would think a similar system could be used for M
  objects.  But the programmer would have to be
 sure
  to call the object's destructor rather than just
  killing it.
 
  Kevin
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-11 Thread Gregory Woodhouse
Well, here's some code I wrote to implement a login dialog (not that  
I'm all that proud of it -- I think it's ugly). You can see that this  
is exactly how the reference passed to the constructor is used.



import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;


public class LoginDialog extends JDialog {

private JButton l_loginButton;
private JButton l_cancelButton;
private Container l_content;
private Triton l_application;

public LoginDialog(Frame parent) {
super(parent, Login, true);
l_application = (Triton) parent;
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
l_content = getContentPane();

l_loginButton = new JButton(Log in);
l_loginButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
signIn();
setVisible(false);
dispose();
}
});

l_cancelButton = new JButton(Cancel);
l_cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
l_application.setConnected(false);
setVisible(false);
dispose();
}
});

JPanel p = new JPanel();
//p.setLayout(new GridLayout(2,1));
EmptyBorder empty = new EmptyBorder(0, 0, 0, 10);
p.setLayout(new GridBagLayout());
p.setBorder(new EmptyBorder(new Insets(5, 5, 5, 5)));
getContentPane().add(BorderLayout.CENTER, p);
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets (2, 2, 2, 2);
c.anchor = GridBagConstraints.WEST;
JLabel name_label = new JLabel(Login Name);
name_label.setBorder(empty);
c.gridwidth = 1;
c.weightx = 0.0;
p.add(name_label, c);
JTextField name = new JTextField();
c.gridx = 1; //position
c.weightx = 1.0;
c.fill = GridBagConstraints.HORIZONTAL;
p.add(name, c);
JLabel password_label = new JLabel(Password);
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 1;
c.weightx = 0.0;
p.add(password_label, c);
JPasswordField password = new JPasswordField();
c.weightx = 1.0;
c.gridx = 1;
p.add(password, c);
setSize(300,200);
c.weightx = 0.0;
c.gridx = 0;
c.gridy = 2;
p.add(l_loginButton, c);
c.gridx = 1;
c.gridy = 2;
c.weightx = 0.0;
c.fill= GridBagConstraints.NONE;
p.add(l_cancelButton, c);
}


protected void signIn() {
l_application.setConnected(true);
}

protected void signOut() {
l_application.setConnected(false);
}
}

===
Gregory Woodhouse
[EMAIL PROTECTED]

The whole of science is nothing more than a refinement
 of everyday thinking.  -- Albert Einstein


On Jul 11, 2005, at 5:15 PM, Kevin Toppenberg wrote:


I wonder if the reference to the JFrame is for a
messaging system.  In Borland/Windows, a GUI object
has both an 'owner' (one responsible for utimately
destroying it) as well as a 'parent' (one from whom
one receives windows messages).  I can't see why your
objects would need to reference the JFrame (is this a
graphic frame?) unless it was for messaging (i.e.
time to repaint your area!)

Kevin






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Richard G. DAVIS
Well Gregory, I don't know what a normal application is   :-)

However, the first application written in MUMPS using FileManager, and
placed into use for paitent care in May 1979, routinely examined the Data
Dictionary to discover if any fields had been added or removed.  The
application then adjusted the data presentation and analysis to reflect
these changes.  

The application was a Food Nutrient Analysis package used to develop diet
plans for diabetics who were being treated with a High Fiber, High
Carbohydrate diet.  Physicians prescribed the desired nutrient profile for
the diets, and dietitians used the FNA package together with patient
preferences to develop meal plans.  The Dietitians were free to add
nutrients, remove them and edit the properties of each nutrient.

The notion of data dictionary driven application logic was there at the dawn
of DHCP.  The conceptual development around this principle, and the
associated tools, did not take of vigorously, however.

Regards,

Richard.

==

 From: Gregory Woodhouse [EMAIL PROTECTED]
 Reply-To: hardhats-members@lists.sourceforge.net
 Date: Sat, 9 Jul 2005 15:13:57 -0700
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question...
 
 No, I'm afraid not. There are calls to return information *about*
 fields, but I know of no way of retrieving a field list. In my own
 utilities, I've $ORDERed through ^DD (recursively descending into
 subfiles, if needed). Normal applications do not generally need to
 do this kind of thing, so I guess it was never a priority to create
 an API to do this.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 The policy of being too cautious is
 the greatest risk of all.
 --Jawaharlal Nehru
 
 
 On Jul 9, 2005, at 2:26 PM, Kevin Toppenberg wrote:
 
 Is there a proper way to get a list of all fields
 for a file via database calls?
 
 I think I can do it at a lower level, but I thought
 there would probably be a call for this.  But I can't
 find it.
 
 Thanks
 Kevin
 
 
 
 
 
 ---
 This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
 core and dual graphics technology at this free one hour event hosted by HP,
 AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hardhats-members



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Marianne Susaanti Follingstad


Kevin, I believe you are looking for the List File Attributes option,
which is under FileMan options and Data Dictionary options within that.
If you instead want something across files, I believe there is something
in the IHS version. Maybe someone else could speak to that.
Marianne
Kevin Toppenberg wrote:
OK. That makes me feel better.
Thanks
Kevin
--- Gregory Woodhouse
[EMAIL PROTECTED]> wrote:
> No, I'm afraid not. There are calls to return
> information *about*
> fields, but I know of no way of retrieving a field
> list. In my own
> utilities, I've $ORDERed through ^DD (recursively
> descending into
> subfiles, if needed). "Normal" applications do not
> generally need to
> do this kind of thing, so I guess it was never a
> priority to create
> an API to do this.
>
> ===
> Gregory Woodhouse
> [EMAIL PROTECTED]
>
> "The policy of being too cautious is
> the greatest risk of all."
> --Jawaharlal Nehru
>
>
> On Jul 9, 2005, at 2:26 PM, Kevin Toppenberg wrote:
>
> > Is there a "proper" way to get a list of all
> fields
> > for a file via database calls?
> >
> > I think I can do it at a lower level, but I
> thought
> > there would probably be a call for this. But I
> can't
> > find it.
> >
> > Thanks
> > Kevin
> >
> >
>
>
>
>
---
> This SF.Net email is sponsored by the 'Do More With
> Dual!' webinar happening
> July 14 at 8am PDT/11am EDT. We invite you to
> explore the latest in dual
> core and dual graphics technology at this free one
> hour event hosted by HP,
> AMD, and NVIDIA. To register visit
> http://www.hp.com/go/dualwebinar
> ___
> Hardhats-members mailing list
> Hardhats-members@lists.sourceforge.net
>
https://lists.sourceforge.net/lists/listinfo/hardhats-members
>
__
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar
happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in
dual
core and dual graphics technology at this free one hour event hosted
by HP,
AMD, and NVIDIA. To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members



Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Gregory Woodhouse
A normal application is one that does the kind of thing I thought  
it might need to do. You're right that it is a basic rule that no one  
can ever think of everything ahead of time. And -- to step on a  
personal soap box of mine -- maybe some day we'll stop developing  
software as if though we had thought of everything ahead of time.


===
Gregory Woodhouse
[EMAIL PROTECTED]

Before one gets the right answer, one must ask the right question.  
-- S. Barry Cooper



On Jul 10, 2005, at 6:34 AM, Richard G. DAVIS wrote:


Well Gregory, I don't know what a normal application is   :-)




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Gregory Woodhouse
It would be easy enough (though maybe a bit tedious) to design an API  
to do the same basic thing. I think I already shared the code I wrote  
to visit all the fields in a file. You can then use FIELD^DID or  
FIELDLST^DID.

===
Gregory Woodhouse
[EMAIL PROTECTED]

Design quality doesn't ensure success, but design failure can ensure  
failure.


--Kent Beck

On Jul 10, 2005, at 5:11 AM, Marianne Susaanti Follingstad wrote:

Kevin, I believe you are looking for the List File Attributes  
option, which is under FileMan options and Data Dictionary options  
within that.  If you instead want something across files, I believe  
there is something in the IHS version.  Maybe someone else could  
speak to that.

Marianne






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Gregory Woodhouse
There are two people in Oakland dealing with problems like this. One  
person likes to use standard tools like the one you mention and use a  
screen scraping approach to parse the output and put it into  
database form. I've taken the approach of writing code to extract the  
data directly. Since this was done (in my case) as part of an  
analysis effort, the code didn't need to be released, and so SAC  
compliance wasn't really as much of an issue.


Personally, I'd like to see an API in Fileman for everything that you  
can do through an option, but originally, no one really thought this  
would be necessary.


===
Gregory Woodhouse
[EMAIL PROTECTED]

It is foolish to answer a question that
you do not understand.
--G. Polya (How to Solve It)


On Jul 10, 2005, at 5:11 AM, Marianne Susaanti Follingstad wrote:

Kevin, I believe you are looking for the List File Attributes  
option, which is under FileMan options and Data Dictionary options  
within that.  If you instead want something across files, I believe  
there is something in the IHS version.  Maybe someone else could  
speak to that.

Marianne






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Kevin Toppenberg
Its not too tedius.  Here is the function I created to
generate a list of all fields (but not subfields) for
a file.

GetFldList(FileNmber,pArray)

   new index set index=$order(^DD(FileNumber,0))
   if +index0 for  do  quit:(+index'0)
   . set @pArray@(index)=
   . set index=$order(^DD(FileNumber,index))

Kevin




--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 It would be easy enough (though maybe a bit tedious)
 to design an API  
 to do the same basic thing. I think I already shared
 the code I wrote  
 to visit all the fields in a file. You can then use
 FIELD^DID or  
 FIELDLST^DID.
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 Design quality doesn't ensure success, but design
 failure can ensure  
 failure.
 
 --Kent Beck
 
 On Jul 10, 2005, at 5:11 AM, Marianne Susaanti
 Follingstad wrote:
 
  Kevin, I believe you are looking for the List File
 Attributes  
  option, which is under FileMan options and Data
 Dictionary options  
  within that.  If you instead want something across
 files, I believe  
  there is something in the IHS version.  Maybe
 someone else could  
  speak to that.
  Marianne
 
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Kevin Toppenberg
Are you referring to the function FILE^DID?  Because I
don't see an atrribute to specify for it to return
field information.

Thanks
Kevin


--- Marianne Susaanti Follingstad
[EMAIL PROTECTED] wrote:

 Kevin, I believe you are looking for the List File
 Attributes option, which is
 under FileMan options and Data Dictionary options
 within that.  If you instead
 want something across files, I believe there is
 something in the IHS version.
 Maybe someone else could speak to that.
 
 Marianne
 
 Kevin Toppenberg wrote:
 
  OK.  That makes me feel better.
 
  Thanks
  Kevin
 
  --- Gregory Woodhouse
  [EMAIL PROTECTED] wrote:
 
   No, I'm afraid not. There are calls to return
   information *about*
   fields, but I know of no way of retrieving a
 field
   list. In my own
   utilities, I've $ORDERed through ^DD
 (recursively
   descending into
   subfiles, if needed). Normal applications do
 not
   generally need to
   do this kind of thing, so I guess it was never a
   priority to create
   an API to do this.
  
   ===
   Gregory Woodhouse
   [EMAIL PROTECTED]
  
   The policy of being too cautious is
   the greatest risk of all.
   --Jawaharlal Nehru
  
  
   On Jul 9, 2005, at 2:26 PM, Kevin Toppenberg
 wrote:
  
Is there a proper way to get a list of all
   fields
for a file via database calls?
   
I think I can do it at a lower level, but I
   thought
there would probably be a call for this.  But
 I
   can't
find it.
   
Thanks
Kevin
   
   
  
  
  
  
 

---
   This SF.Net email is sponsored by the 'Do More
 With
   Dual!' webinar happening
   July 14 at 8am PDT/11am EDT. We invite you to
   explore the latest in dual
   core and dual graphics technology at this free
 one
   hour event hosted by HP,
   AMD, and NVIDIA.  To register visit
   http://www.hp.com/go/dualwebinar
   ___
   Hardhats-members mailing list
   Hardhats-members@lists.sourceforge.net
  
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
  
 
  __
  Do You Yahoo!?
  Tired of spam?  Yahoo! Mail has the best spam
 protection around
  http://mail.yahoo.com
 
 

---
  This SF.Net email is sponsored by the 'Do More
 With Dual!' webinar happening
  July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
  core and dual graphics technology at this free one
 hour event hosted by HP,
  AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
  ___
  Hardhats-members mailing list
  Hardhats-members@lists.sourceforge.net
 

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 





Sell on Yahoo! Auctions – no fees. Bid on great items.  
http://auctions.yahoo.com/


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Gregory Woodhouse

No, I mean FIELD^DID. This call gives you information about fields.

===
Gregory Woodhouse
[EMAIL PROTECTED]

It is foolish to answer a question that
you do not understand.
--G. Polya (How to Solve It)


On Jul 10, 2005, at 10:09 AM, Kevin Toppenberg wrote:


Are you referring to the function FILE^DID?  Because I
don't see an atrribute to specify for it to return
field information.

Thanks
Kevin





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Gregory Woodhouse
That's not what I had in mind when I said the process was tedious: I  
was referring to the process of extracting all the different  
information you might want about each field and reformatting it.  
Fortunately, FIELDLST^DID allows you to retrieve multiple field  
attributes in one call.

===
Gregory Woodhouse
[EMAIL PROTECTED]

A practical man is a man who practices the errors of his  
forefathers. -- Benjamin Disraeli




On Jul 10, 2005, at 10:07 AM, Kevin Toppenberg wrote:


Its not too tedius.  Here is the function I created to
generate a list of all fields (but not subfields) for
a file.

GetFldList(FileNmber,pArray)

   new index set index=$order(^DD(FileNumber,0))
   if +index0 for  do  quit:(+index'0)
   . set @pArray@(index)=
   . set index=$order(^DD(FileNumber,index))

Kevin





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Gregory Woodhouse
Oh...and don't forget that some of those fields may be multiple. In  
those cases you need to descend into the subfile, too (but watch out  
for WP fields).

===
Gregory Woodhouse
[EMAIL PROTECTED]

Design quality doesn't ensure success, but design failure can ensure  
failure.


--Kent Beck

On Jul 10, 2005, at 10:07 AM, Kevin Toppenberg wrote:


Its not too tedius.  Here is the function I created to
generate a list of all fields (but not subfields) for
a file.

GetFldList(FileNmber,pArray)

   new index set index=$order(^DD(FileNumber,0))
   if +index0 for  do  quit:(+index'0)
   . set @pArray@(index)=
   . set index=$order(^DD(FileNumber,index))

Kevin






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Richard G. DAVIS
Well, I believe that one need not think of everything ahead of time.  The
FNA application surely didn't.

The design principle is to code for the general case.  Do not make
constraints as a way of life.

Then there is the overwhelming tendency of software engineers to be
exceedingly egocentric.  Later, when this tendency is recognized as
restrictive, we hear the can't think of everything chorus.

The enlightened path is to design for the general case, and to spend most of
the effort taking care to be sure that THE PROBLEM has been identified and
well characterized.

It is not so much thinking of everything.  Instead, it is solving the
correct problem.

The early DHCP Pharmacy application was a glorified label generator.  The
problem we needed to solve was how to create software that would facilitate
the work processes of the pharmacy business.   (...in an open way of
course.)


 From: Gregory Woodhouse [EMAIL PROTECTED]
 Reply-To: hardhats-members@lists.sourceforge.net
 Date: Sun, 10 Jul 2005 09:39:34 -0700
 To: hardhats-members@lists.sourceforge.net
 Subject: Re: [Hardhats-members] Data dictionary question...
 
 A normal application is one that does the kind of thing I thought
 it might need to do. You're right that it is a basic rule that no one
 can ever think of everything ahead of time. And -- to step on a
 personal soap box of mine -- maybe some day we'll stop developing
 software as if though we had thought of everything ahead of time.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]

...

.



---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Kevin Toppenberg
You would have to know which field to ask about.  I am
wanting a list of the fields to begin with.  I don't
think that function will do that.

Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 No, I mean FIELD^DID. This call gives you
 information about fields.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 It is foolish to answer a question that
 you do not understand.
 --G. Polya (How to Solve It)
 
 
 On Jul 10, 2005, at 10:09 AM, Kevin Toppenberg
 wrote:
 
  Are you referring to the function FILE^DID? 
 Because I
  don't see an atrribute to specify for it to return
  field information.
 
  Thanks
  Kevin
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Gregory Woodhouse
What can I say? I completely agree with you that there is no reason  
to think we should either need to think of everything, or that it  
is even remotely possible to do so. I try to design software to be  
flexible and extensible in this regard, and yes, I do find that my  
coworkers do sometimes look askance at my code. I well remember one  
of my most recent code reviews in which someone told me my code was  
hard to read. Needless to say, that is about the last thing I wanted  
to hear. But trite and old-fashioned as it sounds, I like the  
patterns approach to system design, and have come to realize in  
retrospect that my code sometimes looks odd to my colleagues  
precisely because I have (perhaps intuitively) made use of patterns  
in my work. I also believe that a major problem with software  
development is that we  tend to see coding as a more or less  
technical task in which we implement requirements identified at the  
analysis phase. In the process, design and (to a lesser extent)  
architecture tends to get short shrift -- very much to our detriment.

===
Gregory Woodhouse
[EMAIL PROTECTED]

A hero is no braver than an ordinary
man, but he is brave five minutes longer.
-- Ralph Waldo Emerson


On Jul 10, 2005, at 4:18 PM, Richard G. DAVIS wrote:

Well, I believe that one need not think of everything ahead of  
time.  The

FNA application surely didn't.

The design principle is to code for the general case.  Do not make
constraints as a way of life.

Then there is the overwhelming tendency of software engineers to be
exceedingly egocentric.  Later, when this tendency is recognized as
restrictive, we hear the can't think of everything chorus.

The enlightened path is to design for the general case, and to  
spend most of
the effort taking care to be sure that THE PROBLEM has been  
identified and

well characterized.

It is not so much thinking of everything.  Instead, it is solving the
correct problem.

The early DHCP Pharmacy application was a glorified label  
generator.  The
problem we needed to solve was how to create software that would  
facilitate

the work processes of the pharmacy business.   (...in an open way of
course.)





---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-10 Thread Gregory Woodhouse
There isn't. I thought you were asking whether there was a call,  
similar to FILE^DID, to obtain information about fields in a file.

===
Gregory Woodhouse
[EMAIL PROTECTED]

And the end of all our exploring
will be to arrive where we started
And know the place for the first time
-- T.S. Eliot



On Jul 10, 2005, at 6:48 PM, Kevin Toppenberg wrote:


You would have to know which field to ask about.  I am
wanting a list of the fields to begin with.  I don't
think that function will do that.

Kevin




---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-09 Thread Gregory Woodhouse
No, I'm afraid not. There are calls to return information *about*  
fields, but I know of no way of retrieving a field list. In my own  
utilities, I've $ORDERed through ^DD (recursively descending into  
subfiles, if needed). Normal applications do not generally need to  
do this kind of thing, so I guess it was never a priority to create  
an API to do this.


===
Gregory Woodhouse
[EMAIL PROTECTED]

The policy of being too cautious is
the greatest risk of all.
--Jawaharlal Nehru


On Jul 9, 2005, at 2:26 PM, Kevin Toppenberg wrote:


Is there a proper way to get a list of all fields
for a file via database calls?

I think I can do it at a lower level, but I thought
there would probably be a call for this.  But I can't
find it.

Thanks
Kevin






---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members


Re: [Hardhats-members] Data dictionary question...

2005-07-09 Thread Kevin Toppenberg
OK.  That makes me feel better.

Thanks
Kevin


--- Gregory Woodhouse
[EMAIL PROTECTED] wrote:

 No, I'm afraid not. There are calls to return
 information *about*  
 fields, but I know of no way of retrieving a field
 list. In my own  
 utilities, I've $ORDERed through ^DD (recursively
 descending into  
 subfiles, if needed). Normal applications do not
 generally need to  
 do this kind of thing, so I guess it was never a
 priority to create  
 an API to do this.
 
 ===
 Gregory Woodhouse
 [EMAIL PROTECTED]
 
 The policy of being too cautious is
 the greatest risk of all.
 --Jawaharlal Nehru
 
 
 On Jul 9, 2005, at 2:26 PM, Kevin Toppenberg wrote:
 
  Is there a proper way to get a list of all
 fields
  for a file via database calls?
 
  I think I can do it at a lower level, but I
 thought
  there would probably be a call for this.  But I
 can't
  find it.
 
  Thanks
  Kevin
 
 
 
 
 

---
 This SF.Net email is sponsored by the 'Do More With
 Dual!' webinar happening
 July 14 at 8am PDT/11am EDT. We invite you to
 explore the latest in dual
 core and dual graphics technology at this free one
 hour event hosted by HP,
 AMD, and NVIDIA.  To register visit
 http://www.hp.com/go/dualwebinar
 ___
 Hardhats-members mailing list
 Hardhats-members@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/hardhats-members
 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


---
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP,
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
___
Hardhats-members mailing list
Hardhats-members@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hardhats-members