blob: 854ee56c1f86857e0d887867c96bb9742fe2440f [file] [log] [blame]
/**********************************************************************
* This file is part of "Object Teams Development Tooling"-Software
*
* Copyright 2004, 2010 Technical University Berlin, Germany.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
* $Id$
*
* Please visit http://www.eclipse.org/objectteams for updates and contact.
*
* Contributors:
* Technical University Berlin - Initial API and implementation
**********************************************************************/
package org.eclipse.objectteams.example.observer.library;
import java.util.Arrays;
import java.util.HashMap;
/**
* Central class of a simplistic library-system.
* The book manager keeps a set of books.
*/
public class BookManager {
private HashMap<String, String> view = new HashMap<String, String>(); // ID -> status
/**
* A new copy of a book is bought and stored in the book manager.
* @param bc the new book copy.
*/
public void buy (BookCopy bc) {
updateView (bc);
}
/**
* Remove a book copy, e.g., after it was lost.
* @param bc
*/
public void drop (BookCopy bc) {
view.remove(bc.getID());
}
/**
* Print some information on each book managed by us.
*/
public void printView () {
System.out.println("Copy\t\t\tStatus");
System.out.println("--------------------------------");
String[] keys = view.keySet().toArray(new String[view.size()]);
Arrays.sort(keys); // sorting is for testability.
for (int i=0; i<keys.length; i++) {
String key = keys[i];
String status = view.get(key);
System.out.println(key + "\t" + status);
}
}
/**
* Update the status (available/out) of a given book copy.
* @param bc
*/
public void updateView(BookCopy bc) {
String status = bc.isAvail() ? "available" : "out";
view.put(bc.getID(), status);
}
}