private void processAddMaster(Sim_event ev)
    {
        if (ev == null) {
            return;
        }

        int result = -1;
        Object[] data = (Object[]) ev.get_data();
        if (data == null)
        {
            System.out.println(super.get_name() +
                    ".processAddMaster(): master file name is null");
            return;
        }

        String filename = (String) data[0];             // file name
        FileAttribute attr = (FileAttribute) data[1];   // file attribute
        Integer resourceID = (Integer) data[2];                 // resource ID
        int uniqueID = -1;

        try
        {
            uniqueID = createUniqueID(filename); // create a unique file ID
            result = DataGridTags.CTLG_ADD_MASTER_SUCCESSFUL;

            // put the master file attribute into the catalogue
            ArrayList list = new ArrayList();
            list.add(resourceID);

            catalogueHash_.put(filename + uniqueID, list);
            attrHash_.put(filename + uniqueID, attr);

            /*****  // DEBUG
            System.out.println(super.get_name() +
                ".processAddMaster(): " + filename + " --> id = " + uniqueID);
            *****/
        }
        catch (Exception e) {
            result = DataGridTags.CTLG_ADD_MASTER_ERROR;
        }

        // sends the result back to sender
        data = new Object[3];
        data[0] = filename;
        data[1] = new Integer(uniqueID);
        data[2] = new Integer(result);

        super.send(super.output, 0, DataGridTags.CTLG_ADD_MASTER_RESULT,
            new IO_data(data, DataGridTags.PKT_SIZE, resourceID.intValue()) );
    }