Skip to Content.
Sympa Menu

grouper-users - RE: [grouper-users] RE: Grouper 1.4.0: Using hooks

Subject: Grouper Users - Open Discussion List

List archive

RE: [grouper-users] RE: Grouper 1.4.0: Using hooks


Chronological Thread 
  • From: "Dr. Loris Bennett" <>
  • To: Chris Hyzer <>
  • Cc: Grouper Users Mailing List <>
  • Subject: RE: [grouper-users] RE: Grouper 1.4.0: Using hooks
  • Date: Mon, 09 Feb 2009 13:55:29 +0100
  • Organization: Freie Universität Berlin

Hi Chris,

Using your code I got everything working for a groupPostCommit hook,
which is great.

However, I can't try out the groupPostInsert hook with the CVS version,
because when I try to update the database from 1.4.0, I get the
following error:

Grouper ddl object type 'Grouper' has dbVersion: 12 and java version: 13
org.apache.ddlutils.model.ModelException: There are multiple
column with the name id in the table grouper_attributes

The error message is misleading, since the table has in fact the regular
5 attributes - id, group_id, field_id, value, hibernate_version_number.

Any ideas?

TIA

Loris

On Thu, 2009-02-05 at 16:21 -0500, Chris Hyzer wrote:
> Ok, the workaround isn’t working, lets fix the real issues first...
>
> Those two bugs are fixed in the 1.4 branch, can you get latest from 1.4
> branch?
>
> https://bugs.internet2.edu/jira/browse/GRP-219
> https://bugs.internet2.edu/jira/browse/GRP-220
>
> cvs
> -d:pserver::/home/cvs/i2mi
> login
> cvs
> -d:pserver::/home/cvs/i2mi
> export -r GROUPER_1_4_BRANCH grouper
>
> Now we should be able to do this the original way, with a postInsert hook,
> and group.addType.
>
> Here is my testcase:
>
> public void groupPostInsert(HooksContext hooksContext,
> HooksGroupBean postInsertBean) {
>
> super.groupPostInsert(hooksContext, postInsertBean);
> try {
> Group group = postInsertBean.getGroup();
> GroupType fubGroup = GroupTypeFinder.find("fubGroup");
> group.addType(fubGroup);
> int sequenceNumber = 2;
> group.setAttribute("gid", sequenceNumber + "");
> group.store();
> } catch (Exception e) {
> throw new RuntimeException(e.getMessage(), e);
> }
> }
>
> Now, to get that "2", you want to use an oracle sequence? You should be
> able to do something like this:
>
> int sequenceNumber = HibernateSession.bySqlStatic().select(int.class,
> "select someSeq.nextval from dual");
>
> If you want to put it in a table, you can use hibernate, but unless you are
> doing a lot of sql, might just want to use sql... if you want hibernate,
> let me know and I can make an example...
>
> List<Object> params = GrouperUtil.toList((Object)group.getUuid(),
> sequenceNumber);
> HibernateSession.bySqlStatic().executeSql("insert into some_table
> (col1, col2) values (?, ?)",
> params);
>
>
> OK, all that being said, I think you have another problem... your type has
> an extra attribute associated with it right (should only have gid, but it
> also has "id")??? You should be able to run this query:
>
> select gt.name as type_name, gf.name as field_name,
> gf.is_nullable, gf.type as field_type, gf.read_privilege,
> gf.write_privilege, gt.is_assignable, gt.is_internal
> from grouper_fields gf, grouper_types gt where
> gf.grouptype_uuid = gt.id
>
> You should see that fubGroup has one attribute named "gid". If you see
> multiple attributes, you can delete those attributes (assuming they aren’t
> already being used :) ), with gsh... I usually make my group types with
> java or gsh, not xml, but Im not sure what the issue is...
>
> https://wiki.internet2.edu/confluence/display/GrouperWG/GrouperShell+(gsh)
> typeDelField(type name, field name)
>
>
> Let me know the next step.
> Kind regards,
>
> Chris
>
>
>
>
>
>
> > -----Original Message-----
> > From: Dr. Loris Bennett
> > [mailto:]
> > Sent: Thursday, February 05, 2009 6:14 AM
> > To: Chris Hyzer
> > Cc: Grouper Users Mailing List
> > Subject: RE: [grouper-users] RE: Grouper 1.4.0: Using hooks
> >
> > On Wed, 2009-02-04 at 11:38 -0500, Chris Hyzer wrote:
> > > Ok, this is a problem with grouper. In addChildGroup in Stem, it
> > assume that the types aren’t saved yet right after the group insert
> > (since hooks didn’t exist back then, it was a safe assumption).
> > >
> > > I added a bug:
> > >
> > > https://bugs.internet2.edu/jira/browse/GRP-219
> > >
> > > We will be able to fix this no problem.
> > >
> > > In the meantime, you have two options:
> > >
> > > 1. Instead of adding a type, add it to the list of types that the
> > calling method will add:
> > >
> > > FROM:
> > > g.addType(fubGroup);
> > >
> > > TO:
> > > g.getTypesDb().add(fubGroup);
> > >
> > > This seems like the best temporary workaround until we fix the real
> > issue. Though this using an internal method, so you should definitely
> > switch it out when you get a fixed group. I tried it and it works.
> >
> > This gives me the error:
> >
> > 2009-02-05 09:11:54,097: [http-130.133.2.116-9080-Processor21]
> > ERROR GrouperCapableAction.execute(281) -
> > java.lang.RuntimeException: edu.internet2.mid
> > dleware.grouper.exception.SchemaException: invalid group type:
> > for group name: test:abc123,
> > GroupType[creatorUuid=b0bb6118-c6b9-4d37-8257-61dcee19b4c
> >
> > 6,createTime=1231229012373,fields=12,isAssignable=false,isInternal=fals
> > e,name=base,uuid=fc8eff6c-6812-4a10-8891-133df83bfbb5]:extension
> >
> > The UI says that the group was saved successfully, but also that an
> > error occurred. When I click on the group in the UI to get the group
> > summary, I get the standard error message.
> >
> > So I tried the second method (see below) ...
> >
> > > ################################
> > >
> > > -or- 2. Do a postCommitInsert hook. This will not be in the same
> > transaction, but all the work of adding the group will be done, so you
> > are safe to add a type.
> > > Again, if you pick this, then you might want to switch it back when
> > you get a fixed grouper. I tried this and it didn’t commit the changes
> > (something about post
> > > commit puts it in a transaction that doesn’t get committed). I made
> > another bug:
> > >
> > > https://bugs.internet2.edu/jira/browse/GRP-220
> > >
> > > The workaround here is to just make a new transaction that will
> > commit when done. I tested it and it works:
> > >
> > > FROM:
> > > public void groupPostInsert(HooksContext hooksContext,
> > HooksGroupBean postInsertBean) {
> > >
> > > TO:
> > > public void groupPostCommitInsert(HooksContext hooksContext,
> > HooksGroupBean postInsertBean) {
> > >
> > > FROM:
> > > g.addType(fubGroup);
> > >
> > > TO:
> > > final Group G = g;
> > > final GroupType FUB_GROUP = fubGroup;
> > > HibernateSession.callbackHibernateSession(
> > > GrouperTransactionType.READ_WRITE_NEW, new
> > HibernateHandler() {
> > >
> > > public Object callback(HibernateSession hibernateSession)
> > > throws GrouperDAOException {
> > > try {
> > > G.addType(FUB_GROUP);
> > > } catch (Exception e) {
> > > throw new RuntimeException(e);
> > > }
> > > return null;
> > > }
> > >
> > > });
> > >
> >
> > This works. The group type is added with the attributes
> >
> > gid <empty>
> > id <same as uuid>
> >
> > However, my definition of the group type looks like
> >
> > <registry>
> > <metadata>
> > <groupTypesMetaData>
> > <groupTypeDef name='fubGroup'>
> > <field name='gid' required='false' type='attribute'
> > readPriv='read' writePriv='admin'/>
> > </groupTypeDef>
> > </groupTypesMetaData>
> > </metadata>
> > </registry>
> >
> > so where does 'id' come from?
> >
> > > Let me know if you need more help.
> >
> > Another thing I am not sure about is how I would do an insert into a
> > table such as "fub_group_ids" to get a gid from a sequence which I can
> > then write into the 'gid' field of my customised type. I am not too
> > familiar with hibernate, but assume this would be the way to go, right?
> >
> > Thanks for all your help,
> >
> > Loris
> >
> > > Kind regards,
> > > Chris
> > >
> > > > -----Original Message-----
> > > > From: Dr. Loris Bennett
> > > > [mailto:]
> > > > Sent: Wednesday, February 04, 2009 6:08 AM
> > > > To: Chris Hyzer
> > > > Cc: Grouper Users Mailing List
> > > > Subject: RE: [grouper-users] RE: Grouper 1.4.0: Using hooks
> > > >
> > > > Hi Chris,
> > > >
> > > > I tried the failsafe call, but got the same errors. In the UI:
> > > >
> > > > Error: Could not create group. Error is 'cannot create
> > child
> > > > group: Problem create child stem:
> > > > Stem[displayName=test,name=test,uuid=029bc9c2-50bd-4122-
> > 891c-
> > > > ffdf252744b8,creator=fd703376-4f16-47df-b707-
> > > > 64d8c5953d04,modifier=fd703376-4f16-47df-b707-64d8c5953d04], child:
> > > > Group[name=test:xxx,uuid=d559eccd-9be2-4555-ac1a-40ee72bb106e],
> > > > memberDto: 'd559eccd-9be2-4555-ac1a-40ee72bb106e'/'group'/'g:gsa',
> > > > Problem in HibernateSession: HibernateSession: isNew: false,
> > > > isReadonly: false, grouperTransactionType: READ_WRITE_NEW,
> > Exception in
> > > > uniqueResult: (class java.lang.Object), ByHqlStatic, query: 'select
> > > > m.id from Member as m where m.uuid = :uuid', cacheable: false,
> > > > cacheRegion:
> > > >
> > edu.internet2.middleware.grouper.internal.dao.hib3.Hib3MemberDAO.Exists
> > > > , tx type: nullBind var[0]: 'Param (class java.lang.String):
> > 'uuid'-
> > > > >'90e883dd-326e-40f1-9416-805d2770a9d6', , Problem in
> > HibernateSession:
> > > > HibernateSession: isNew: false, isReadonly: false,
> > > > grouperTransactionType: READ_WRITE_NEW'.
> > > >
> > > > I have attached an extract from the grouper log and the code.
> > > >
> > > > Thanks for all your help.
> > > >
> > > > Loris
> > > >
> > > >
> > > > On Tue, 2009-02-03 at 23:32 -0500, Chris Hyzer wrote:
> > > > > Ive been thinking about your issue, and if your question is, why
> > > > should you use the failsafe group type call since the type hasn’t
> > been
> > > > applied yet, it might be because when you add a type to a group, it
> > > > might update the group lastUpdated col, and invoke the update hook
> > > > again. Then, the second time, it does have that type, and you cant
> > add
> > > > it again. This is something we are exploring for 1.5 (not setting
> > the
> > > > Group lastUpdated for each peripheral operation like memberships,
> > > > types, etc). However, for 1.4, the group object might be saved for
> > any
> > > > related change, which fires the hooks again... so if you use the
> > > > failsafe method per one of my previous emails, then the second time
> > the
> > > > hook is called, it doesn’t fail.
> > > > >
> > > > > Hope this helps, if not, send your code and description again and
> > I
> > > > > will take a look. :)
> > > > >
> > > > > Kind regards,
> > > > > Chris
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Dr. Loris Bennett
> > > > > > [mailto:]
> > > > > > Sent: Tuesday, February 03, 2009 9:37 AM
> > > > > > To: Chris Hyzer
> > > > > > Cc: Grouper Users Mailing List
> > > > > > Subject: RE: [grouper-users] RE: Grouper 1.4.0: Using hooks
> > > > > >
> > > > > > Hi Chris,
> > > > > >
> > > > > > I don't understand what is going on here. If I create a new
> > group
> > > > > > via the UI without selecting any custom type, the code
> > > > > >
> > > > > > Group g = postInsertBean.getGroup();
> > > > > > Set<GroupType> types = g.getTypes();
> > > > > >
> > > > > > tells me that the new group has just one type, namely 'base'. I
> > > > then
> > > > > > get the error
> > > > > >
> > > > > > ERROR JDBCExceptionReporter.logExceptions(78) - ERROR:
> > > > > > duplicate
> > > > > > key violates unique constraint
> > > > "grouptypetyple_grouptype_idx"
> > > > > >
> > > > > > But how can the group already have the type at this point? The
> > > > > > following error appears in the UI:
> > > > > >
> > > > > > Error: Could not create group. Error is 'cannot create
> > > > child
> > > > > > group: Problem create child stem:
> > > > > >
> > > > > > Stem[displayName=test,name=test,uuid=029bc9c2-50bd-4122-891c-
> > > > > > ffdf252744b8,creator=fd703376-4f16-47df-b707-
> > > > > > 64d8c5953d04,modifier=fd703376-4f16-47df-b707-64d8c5953d04],
> > child:
> > > > > > Group[name=test:xyz,uuid=dc2a2fa6-4fad-446e-bf5c-d08dba8d0b33],
> > > > > > memberDto: 'dc2a2fa6-4fad-446e-bf5c-
> > d08dba8d0b33'/'group'/'g:gsa',
> > > > > > Problem in HibernateSession: HibernateSession: isNew: false,
> > > > > > isReadonly: false, grouperTransactionType: READ_WRITE_NEW,
> > > > Exception
> > > > > > in
> > > > > > uniqueResult: (class java.lang.Object), ByHqlStatic, query:
> > 'select
> > > > > > m.id from Member as m where m.uuid = :uuid', cacheable: false,
> > > > > > cacheRegion:
> > > > > >
> > > >
> > edu.internet2.middleware.grouper.internal.dao.hib3.Hib3MemberDAO.Exi
> > > > > > sts , tx type: nullBind var[0]: 'Param (class
> > java.lang.String):
> > > > > > 'uuid'-
> > > > > > >'b412a97d-080a-4b68-a856-5a237a041e06', , Problem in
> > > > HibernateSession:
> > > > > > HibernateSession: isNew: false, isReadonly: false,
> > > > > > grouperTransactionType: READ_WRITE_NEW'.
> > > > > >
> > > > > > Any ideas what I am doing wrong?
> > > > > >
> > > > > > Cheers
> > > > > >
> > > > > > Loris
> > > > > >
> > > > > > On Fri, 2009-01-30 at 15:36 -0500, Chris Hyzer wrote:
> > > > > > > That index "grouptypetyple_grouptype_idx" is a unique index
> > on
> > > > > > > grouper_group_types cols: group_uuid and type_uuid.
> > > > > > >
> > > > > > > So that error means that the group already has the type.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > I have also found it unnatural that the default Grouper API
> > > > > > > behavior is to throw exceptions if the task is already done.
> > > > E.g.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > group.addType(someType);
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Will throw an exception if the type is already there... I
> > have
> > > > > > > been slowly overloading these types of methods with their
> > safe
> > > > > > > equivalents... so if you change it to:
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > //false means don’t throw exception if type is already
> > assigned
> > > > > > >
> > > > > > > group.addType(someType, false);
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > It should do the trick. Let me know if not.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Thanks,
> > > > > > >
> > > > > > > Chris
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Ps. Btw, web services do not behave that way... e.g. if you
> > add
> > > > a
> > > > > > > member to a group that already has the member, it will be a
> > no-
> > > > op,
> > > > > > > return SUCCESS, and let you know exactly what happened (e.g.
> > > > > > > success, but it already had the assignment)
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > >
> > > > > > > > From: Dr. Loris Bennett
> > > > > > > > [mailto:]
> > > > > > >
> > > > > > > > Sent: Friday, January 30, 2009 8:27 AM
> > > > > > >
> > > > > > > > To: Chris Hyzer
> > > > > > >
> > > > > > > > Cc: Grouper Users Mailing List
> > > > > > >
> > > > > > > > Subject: RE: [grouper-users] RE: Grouper 1.4.0: Using hooks
> > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > > > However, when I try to add the type in groupPostInsert, I
> > get
> > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > > > ERROR JDBCExceptionReporter.logExceptions(78) -
> > ERROR:
> > > > > > >
> > > > > > > > duplicate
> > > > > > >
> > > > > > > > key violates unique constraint
> > > > > > > "grouptypetyple_grouptype_idx"
> > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > > > Any ideas?
> > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > > > Loris
> > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > > > On Fri, 2009-01-30 at 07:34 -0500, Chris Hyzer wrote:
> > > > > > >
> > > > > > > > > Good catch! Thanks!
> > > > > > >
> > > > > > > > >
> > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > >
> > > > > > > > > > From: Dr. Loris Bennett
> > > > > > > > > > [mailto:loris.bennett@fu-
> > berlin.de]
> > > > > > >
> > > > > > > > > > Sent: Friday, January 30, 2009 7:31 AM
> > > > > > >
> > > > > > > > > > To: Chris Hyzer
> > > > > > >
> > > > > > > > > > Cc: Grouper Users Mailing List
> > > > > > >
> > > > > > > > > > Subject: RE: [grouper-users] RE: Grouper 1.4.0: Using
> > hooks
> > > > > > >
> > > > > > > > > >
> > > > > > >
> > > > > > > > > > OK, I see what I am doing wrong. I have the addType in
> > my
> > > > > > >
> > > > > > > > > > groupPreInsert, whereas the group must already exist
> > before
> > > > > > > > > > I
> > > > > > > can
> > > > > > >
> > > > > > > > add
> > > > > > >
> > > > > > > > > > anything to it.
> > > > > > >
> > > > > > > > > >
> > > > > > >
> > > > > > > > > > On Fri, 2009-01-30 at 11:39 +0100, Dr. Loris Bennett
> > wrote:
> > > > > > >
> > > > > > > > > > > Hi Chris,
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > Using
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > fubGroup =
> > GroupTypeFinder.find(groupTypeName);
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > I can get my custom group type, but when I try to add
> > > > this
> > > > > > > with
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > g.addType(fubGroup);
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > I get the error:
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > ERROR JDBCExceptionReporter.logExceptions(78)
> > -
> > > > > > ERROR:
> > > > > > >
> > > > > > > > insert
> > > > > > >
> > > > > > > > > > or
> > > > > > >
> > > > > > > > > > > update on table "grouper_groups_types"
> > violates
> > > > > > > foreign
> > > > > > >
> > > > > > > > key
> > > > > > >
> > > > > > > > > > > constraint "fk_groups_types_group_uuid"
> > > > > > >
> > > > > > > > > > > Detail: Key
> > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > (group_uuid)=(6ea9f650-cdc8-4e69-93df-5b35a87351fe)
> > > > > > is
> > > > > > >
> > > > > > > > not
> > > > > > >
> > > > > > > > > > > present in table "grouper_groups".
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > Am I doing something wrong here?
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > TIA
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > Loris
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > On Thu, 2009-01-29 at 03:21 -0500, Chris Hyzer wrote:
> > > > > > >
> > > > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > > > So the pre-insert would also set the custom
> > > > attribute,
> > > > > > > right?
> > > > > > >
> > > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > > OK, didn’t know we were talking about a custom
> > > > attribute.
> > > > > > > It’s
> > > > > > >
> > > > > > > > a
> > > > > > >
> > > > > > > > > > little tricky since the set of attributes is known when
> > the
> > > > > > > group
> > > > > > >
> > > > > > > > SQL
> > > > > > >
> > > > > > > > > > is written, but you are making changes (I guess to that
> > > > > > > attribute
> > > > > > >
> > > > > > > > set).
> > > > > > >
> > > > > > > > > > I would think a post insert is the best bet, and you
> > don’t
> > > > > > > > > > need
> > > > > > > the
> > > > > > >
> > > > > > > > > > pre, but play around and try different things, and if
> > you
> > > > > > > > > > cant
> > > > > > > get
> > > > > > >
> > > > > > > > > > anything to work let me know.
> > > > > > >
> > > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > > Chris
> > > > > > >
> > > > > > > > > > > >
> > > > > > >
> > > > > > > > > > > >
> > > > > > >
> > > > > > > > > > --
> > > > > > >
> > > > > > > > > > Dr. Loris Bennett (Mr.)
> > > > > > >
> > > > > > > > > > Freie Universität Berlin
> > > > > > >
> > > > > > > > > > ZEDAT - Zentraleinrichtung für Datenverarbeitung /
> > Computer
> > > > > > > Center
> > > > > > >
> > > > > > > > > > Compute & Media Service
> > > > > > >
> > > > > > > > > > Fabeckstr. 32, Room 221
> > > > > > >
> > > > > > > > > > D-14195 Berlin
> > > > > > >
> > > > > > > > > > Tel ++49 30 838 51024
> > > > > > >
> > > > > > > > > > Fax ++49 30 838 56721
> > > > > > >
> > > > > > > > > > Email
> > > > > > > > > >
> > > > > > >
> > > > > > > > > > Web www.zedat.fu-berlin.de
> > > > > > >
> > > > > > > > >
> > > > > > >
> > > > > > > > --
> > > > > > >
> > > > > > > > Dr. Loris Bennett (Mr.)
> > > > > > >
> > > > > > > > Freie Universität Berlin
> > > > > > >
> > > > > > > > ZEDAT - Zentraleinrichtung für Datenverarbeitung / Computer
> > > > > > > > Center
> > > > > > >
> > > > > > > > Compute & Media Service
> > > > > > >
> > > > > > > > Fabeckstr. 32, Room 221
> > > > > > >
> > > > > > > > D-14195 Berlin
> > > > > > >
> > > > > > > > Tel ++49 30 838 51024
> > > > > > >
> > > > > > > > Fax ++49 30 838 56721
> > > > > > >
> > > > > > > > Email
> > > > > > > >
> > > > > > >
> > > > > > > > Web www.zedat.fu-berlin.de
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > --
> > > > > > Dr. Loris Bennett (Mr.)
> > > > > > Freie Universität Berlin
> > > > > > ZEDAT - Zentraleinrichtung für Datenverarbeitung / Computer
> > Center
> > > > > > Compute & Media Service Fabeckstr. 32, Room 221
> > > > > > D-14195 Berlin
> > > > > > Tel ++49 30 838 51024
> > > > > > Fax ++49 30 838 56721
> > > > > > Email
> > > > > >
> > > > > > Web www.zedat.fu-berlin.de
> > > > >
> > > > --
> > > > Dr. Loris Bennett (Mr.)
> > > > Freie Universität Berlin
> > > > ZEDAT - Zentraleinrichtung für Datenverarbeitung / Computer Center
> > > > Compute & Media Service Fabeckstr. 32, Room 221
> > > > D-14195 Berlin
> > > > Tel ++49 30 838 51024
> > > > Fax ++49 30 838 56721
> > > > Email
> > > >
> > > > Web www.zedat.fu-berlin.de
> > --
> > Dr. Loris Bennett (Mr.)
> > Freie Universität Berlin
> > ZEDAT - Zentraleinrichtung für Datenverarbeitung / Computer Center
> > Compute & Media Service
> > Fabeckstr. 32, Room 221
> > D-14195 Berlin
> > Tel ++49 30 838 51024
> > Fax ++49 30 838 56721
> > Email
> >
> > Web www.zedat.fu-berlin.de
>
--
Dr. Loris Bennett (Mr.)
Freie Universität Berlin
ZEDAT - Zentraleinrichtung für Datenverarbeitung / Computer Center
Compute & Media Service
Fabeckstr. 32, Room 221
D-14195 Berlin
Tel ++49 30 838 51024
Fax ++49 30 838 56721
Email

Web www.zedat.fu-berlin.de




Archive powered by MHonArc 2.6.16.

Top of Page