⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 allocatablewriter.java

📁 Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI
💻 JAVA
字号:
/*--------------------------------------------------------------------------*
  | Copyright (C) 2006 Christopher Kohlhaas                                  |
  |                                                                          |
  | This program is free software; you can redistribute it and/or modify     |
  | it under the terms of the GNU General Public License as published by the |
  | Free Software Foundation. A copy of the license has been included with   |
  | these distribution in the COPYING file, if not go to www.fsf.org .       |
  |                                                                          |
  | As a special exception, you are granted the permissions to link this     |
  | program with every library, which license fulfills the Open Source       |
  | Definition as published by the Open Source Initiative (OSI).             |
  *--------------------------------------------------------------------------*/

package org.rapla.storage.xml;

import java.io.IOException;
import java.util.Iterator;

import org.rapla.entities.Category;
import org.rapla.entities.EntityNotFoundException;
import org.rapla.entities.RaplaObject;
import org.rapla.entities.domain.Allocatable;
import org.rapla.entities.domain.Permission;
import org.rapla.entities.internal.CategoryImpl;
import org.rapla.framework.RaplaContext;
import org.rapla.framework.RaplaException;


public class AllocatableWriter extends ClassifiableWriter {
    public AllocatableWriter(RaplaContext sm) throws RaplaException {
        super(sm);
    }

    public void printAllocatable(Allocatable allocatable) throws IOException,RaplaException {
        String tagName = allocatable.isPerson()?
            "rapla:person" : "rapla:resource";
        openTag(tagName);
        printId(allocatable);
        printVersion( allocatable);
        if (allocatable.isHoldBackConflicts()) {
            att("holdbackconflicts","true");
        }
        closeTag();
        printClassification(allocatable.getClassification());

        Permission[] permissions = allocatable.getPermissions();
        for ( int i = 0; i < permissions.length; i++ ){
            printPermission(permissions[i]);
        }
        closeElement(tagName);
    }
    
    public void writeObject(RaplaObject object) throws IOException, RaplaException {
        printAllocatable( (Allocatable) object);
    }


    protected void printPermission(Permission p) throws IOException,RaplaException {
        openTag("rapla:permission");
        if ( p.getUser() != null ) {
            att("user", getId( p.getUser() ));
        } else if ( p.getGroup() != null ) {
            if ( isIdOnly() ) {
                att( "groupidref", getId( p.getGroup() ) );
            } else {
                att( "group", getGroupPath( p.getGroup() ) );
            }
        }
        if ( p.getMinAdvance() != null ) {
            att ( "min-advance", p.getMinAdvance().toString() );
        }
        if ( p.getMaxAdvance() != null ) {
            att ( "max-advance", p.getMaxAdvance().toString() );
        }
        if ( p.getStart() != null ) {
            att ( "start-date", dateTimeFormat.formatDate(  p.getStart() ) );
        }
        if ( p.getEnd() != null ) {
            att ( "end-date", dateTimeFormat.formatDate(  p.getEnd() ) );
        }
        if ( p.getAccessLevel() != Permission.ALLOCATE_CONFLICTS ) {
            att("access", (String) Permission.ACCESS_LEVEL_NAMEMAP.get( p.getAccessLevel() ) );
        }
        closeElementTag();
    }

    private String getGroupPath( Category category) throws EntityNotFoundException {
        Category rootCategory = cache.getSuperCategory().getCategory(Permission.GROUP_CATEGORY_KEY);
        return ((CategoryImpl) rootCategory ).getPathForCategory(category);
    }

    public void printAllocatables() throws IOException,RaplaException {
        openElement("rapla:resources");
        println("<!-- resources -->");
        // Print all resources that are not persons
        Iterator it = cache.getIterator(Allocatable.TYPE);
        while (it.hasNext()) {
            Allocatable allocatable = (Allocatable)it.next();
            if ( allocatable.isPerson() )
                continue;
            printAllocatable(allocatable);
        }
        // Print all Persons
        it = cache.getIterator(Allocatable.TYPE);
        while (it.hasNext()) {
            Allocatable allocatable = (Allocatable)it.next();
            if ( !allocatable.isPerson() )
                continue;
            printAllocatable(allocatable);
        }
        println();
        closeElement("rapla:resources");

    }


}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -