/*
* Copyright 2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package demo.cdplayer;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.shell.core.CommandMarker;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
import org.springframework.stereotype.Component;
@Component
public class CdPlayerCommands implements CommandMarker {
@Autowired
private CdPlayer cdPlayer;
@Autowired
private Library library;
@CliCommand(value = "cd lcd", help = "Prints CD player lcd info")
public String lcd() {
return cdPlayer.getLdcStatus();
}
@CliCommand(value = "cd library", help = "List user CD library")
public String library() {
SimpleDateFormat format = new SimpleDateFormat("mm:ss");
StringBuilder buf = new StringBuilder();
int i1 = 0;
for (Cd cd : library.getCollection()) {
buf.append(i1++ + ": " + cd.getName() + "\n");
int i2 = 0;
for (Track track : cd.getTracks()) {
buf.append(" " + i2++ + ": " + track.getName() + " " + format.format(new Date(track.getLength()*1000)) + "\n");
}
}
return buf.toString();
}
@CliCommand(value = "cd load", help = "Load CD into player")
public String load(@CliOption(key = {"", "index"}) int index) {
StringBuilder buf = new StringBuilder();
try {
Cd cd = library.getCollection().get(index);
cdPlayer.load(cd);
buf.append("Loading cd " + cd);
} catch (Exception e) {
buf.append("Cd with index " + index + " not found, check library");
}
return buf.toString();
}
@CliCommand(value = "cd play", help = "Press player play button")
public void play() {
cdPlayer.play();
}
@CliCommand(value = "cd stop", help = "Press player stop button")
public void stop() {
cdPlayer.stop();
}
@CliCommand(value = "cd pause", help = "Press player pause button")
public void pause() {
cdPlayer.pause();
}
@CliCommand(value = "cd eject", help = "Press player eject button")
public void eject() {
cdPlayer.eject();
}
@CliCommand(value = "cd forward", help = "Press player forward button")
public void forward() {
cdPlayer.forward();
}
@CliCommand(value = "cd back", help = "Press player back button")
public void back() {
cdPlayer.back();
}
}