📄 allocatablewriter.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 + -