34 |
import java.util.logging.Level; |
import java.util.logging.Level; |
35 |
import java.util.logging.Logger; |
import java.util.logging.Logger; |
36 |
|
|
|
import static org.linuxsampler.lscp.Parser.*; |
|
37 |
import org.linuxsampler.lscp.event.*; |
import org.linuxsampler.lscp.event.*; |
38 |
|
|
39 |
|
import static org.linuxsampler.lscp.Parser.*; |
40 |
|
|
41 |
|
|
42 |
/** |
/** |
43 |
* This class is the abstraction representing a client endpoint for communication with LinuxSampler |
* This class is the abstraction representing a client endpoint for communication with LinuxSampler |
543 |
if(s.startsWith("NAME ")) { |
if(s.startsWith("NAME ")) { |
544 |
String[] list; |
String[] list; |
545 |
try { |
try { |
546 |
list = parseStringList(s.substring("NAME ".length()), ' '); |
s = s.substring("NAME ".length()); |
547 |
|
list = parseEscapedStringList(s, ' '); |
548 |
if(list.length != 2) throw new LscpException(); |
if(list.length != 2) throw new LscpException(); |
549 |
|
list[1] = toNonEscapedString(list[1]); |
550 |
e = new InstrumentsDbEvent(this, list[0], list[1]); |
e = new InstrumentsDbEvent(this, list[0], list[1]); |
551 |
for(InstrumentsDbListener l : llID) { |
for(InstrumentsDbListener l : llID) { |
552 |
l.directoryNameChanged(e); |
l.directoryNameChanged(e); |
572 |
if(s.startsWith("NAME ")) { |
if(s.startsWith("NAME ")) { |
573 |
String[] list; |
String[] list; |
574 |
try { |
try { |
575 |
list = parseStringList(s.substring("NAME ".length()), ' '); |
s = s.substring("NAME ".length()); |
576 |
|
list = parseEscapedStringList(s, ' '); |
577 |
if(list.length != 2) throw new LscpException(); |
if(list.length != 2) throw new LscpException(); |
578 |
|
list[1] = toNonEscapedString(list[1]); |
579 |
e = new InstrumentsDbEvent(this, list[0], list[1]); |
e = new InstrumentsDbEvent(this, list[0], list[1]); |
580 |
for(InstrumentsDbListener l : llID) { |
for(InstrumentsDbListener l : llID) { |
581 |
l.instrumentNameChanged(e); |
l.instrumentNameChanged(e); |
1360 |
/** |
/** |
1361 |
* Gets detailed information about a specific audio output driver. |
* Gets detailed information about a specific audio output driver. |
1362 |
* @param driverName The name of the audio output driver. |
* @param driverName The name of the audio output driver. |
1363 |
* |
* @param depList An optional list of dependences parameters. |
1364 |
* @return An <code>AudioOutputDriver</code> object containing |
* @return An <code>AudioOutputDriver</code> object containing |
1365 |
* information about the specified audio output driver. |
* information about the specified audio output driver. |
1366 |
* |
* |
1370 |
* |
* |
1371 |
* @see #getAudioOutputDriverNames |
* @see #getAudioOutputDriverNames |
1372 |
*/ |
*/ |
1373 |
private synchronized AudioOutputDriver |
public synchronized AudioOutputDriver |
1374 |
getAudioOutputDriverInfo(String driverName) throws IOException, LscpException, LSException { |
getAudioOutputDriverInfo(String driverName, Parameter... depList) |
1375 |
|
throws IOException, LscpException, LSException { |
1376 |
|
|
1377 |
verifyConnection(); |
verifyConnection(); |
1378 |
out.writeLine("GET AUDIO_OUTPUT_DRIVER INFO " + driverName); |
out.writeLine("GET AUDIO_OUTPUT_DRIVER INFO " + driverName); |
1379 |
if(getPrintOnlyMode()) return null; |
if(getPrintOnlyMode()) return null; |
1383 |
aod.setName(driverName); |
aod.setName(driverName); |
1384 |
|
|
1385 |
for(String s : aod.getParameterNames()) |
for(String s : aod.getParameterNames()) |
1386 |
aod.addParameter(getAudioOutputDriverParameterInfo(driverName, s)); |
aod.addParameter(getAudioOutputDriverParameterInfo(driverName, s, depList)); |
1387 |
|
|
1388 |
return aod; |
return aod; |
1389 |
} |
} |
1417 |
StringBuffer args = new StringBuffer(driver); |
StringBuffer args = new StringBuffer(driver); |
1418 |
args.append(' ').append(param); |
args.append(' ').append(param); |
1419 |
|
|
1420 |
for(Parameter p : deplist) |
for(Parameter p : deplist) { |
1421 |
|
if(p.getValue() == null) continue; |
1422 |
args.append(' ').append(p.getName()).append('=').append(p.getStringValue()); |
args.append(' ').append(p.getName()).append('=').append(p.getStringValue()); |
1423 |
|
} |
1424 |
|
|
1425 |
out.writeLine("GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO " + args.toString()); |
out.writeLine("GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO " + args.toString()); |
1426 |
if(getPrintOnlyMode()) return null; |
if(getPrintOnlyMode()) return null; |
1481 |
verifyConnection(); |
verifyConnection(); |
1482 |
StringBuffer args = new StringBuffer(aoDriver); |
StringBuffer args = new StringBuffer(aoDriver); |
1483 |
|
|
1484 |
for(Parameter p : paramList) |
for(Parameter p : paramList) { |
1485 |
|
if(p.getValue() == null) continue; |
1486 |
args.append(' ').append(p.getName()).append('=').append(p.getStringValue()); |
args.append(' ').append(p.getName()).append('=').append(p.getStringValue()); |
1487 |
|
} |
1488 |
|
|
1489 |
out.writeLine("CREATE AUDIO_OUTPUT_DEVICE " + args.toString()); |
out.writeLine("CREATE AUDIO_OUTPUT_DEVICE " + args.toString()); |
1490 |
if(getPrintOnlyMode()) return -1; |
if(getPrintOnlyMode()) return -1; |
1945 |
/** |
/** |
1946 |
* Gets detailed information about a specific MIDI input driver. |
* Gets detailed information about a specific MIDI input driver. |
1947 |
* @param driverName The name of the MIDI input driver. |
* @param driverName The name of the MIDI input driver. |
1948 |
* |
* @param depList An optional list of dependences parameters. |
1949 |
* @return A <code>MidiInputDriver</code> object containing |
* @return A <code>MidiInputDriver</code> object containing |
1950 |
* information about the specified MIDI input driver. |
* information about the specified MIDI input driver. |
1951 |
* |
* |
1955 |
* |
* |
1956 |
* @see #getMidiInputDriverNames |
* @see #getMidiInputDriverNames |
1957 |
*/ |
*/ |
1958 |
private synchronized MidiInputDriver |
public synchronized MidiInputDriver |
1959 |
getMidiInputDriverInfo(String driverName) throws IOException, LscpException, LSException { |
getMidiInputDriverInfo(String driverName, Parameter... depList) |
1960 |
|
throws IOException, LscpException, LSException { |
1961 |
|
|
1962 |
verifyConnection(); |
verifyConnection(); |
1963 |
out.writeLine("GET MIDI_INPUT_DRIVER INFO " + driverName); |
out.writeLine("GET MIDI_INPUT_DRIVER INFO " + driverName); |
1964 |
if(getPrintOnlyMode()) return null; |
if(getPrintOnlyMode()) return null; |
1969 |
mid.setName(driverName); |
mid.setName(driverName); |
1970 |
|
|
1971 |
for(String s : mid.getParameterNames()) |
for(String s : mid.getParameterNames()) |
1972 |
mid.addParameter(getMidiInputDriverParameterInfo(driverName, s)); |
mid.addParameter(getMidiInputDriverParameterInfo(driverName, s, depList)); |
1973 |
|
|
1974 |
return mid; |
return mid; |
1975 |
} |
} |
2003 |
StringBuffer args = new StringBuffer(driver); |
StringBuffer args = new StringBuffer(driver); |
2004 |
args.append(' ').append(param); |
args.append(' ').append(param); |
2005 |
|
|
2006 |
for(Parameter p : deplist) |
for(Parameter p : deplist) { |
2007 |
|
if(p.getValue() == null) continue; |
2008 |
args.append(' ').append(p.getName()).append('=').append(p.getStringValue()); |
args.append(' ').append(p.getName()).append('=').append(p.getStringValue()); |
2009 |
|
} |
2010 |
|
|
2011 |
out.writeLine("GET MIDI_INPUT_DRIVER_PARAMETER INFO " + args.toString()); |
out.writeLine("GET MIDI_INPUT_DRIVER_PARAMETER INFO " + args.toString()); |
2012 |
if(getPrintOnlyMode()) return null; |
if(getPrintOnlyMode()) return null; |
2068 |
verifyConnection(); |
verifyConnection(); |
2069 |
StringBuffer args = new StringBuffer(miDriver); |
StringBuffer args = new StringBuffer(miDriver); |
2070 |
|
|
2071 |
for(Parameter p : paramList) |
for(Parameter p : paramList) { |
2072 |
|
if(p.getValue() == null) continue; |
2073 |
args.append(' ').append(p.getName()).append('=').append(p.getStringValue()); |
args.append(' ').append(p.getName()).append('=').append(p.getStringValue()); |
2074 |
|
} |
2075 |
|
|
2076 |
out.writeLine("CREATE MIDI_INPUT_DEVICE " + args.toString()); |
out.writeLine("CREATE MIDI_INPUT_DEVICE " + args.toString()); |
2077 |
if(getPrintOnlyMode()) return -1; |
if(getPrintOnlyMode()) return -1; |
2460 |
public synchronized int |
public synchronized int |
2461 |
addMidiInstrumentMap(String name) throws IOException, LSException, LscpException { |
addMidiInstrumentMap(String name) throws IOException, LSException, LscpException { |
2462 |
verifyConnection(); |
verifyConnection(); |
2463 |
out.writeLine("ADD MIDI_INSTRUMENT_MAP '" + name + "'"); |
out.writeLine("ADD MIDI_INSTRUMENT_MAP '" + toEscapedString(name) + "'"); |
2464 |
if(getPrintOnlyMode()) return -1; |
if(getPrintOnlyMode()) return -1; |
2465 |
|
|
2466 |
ResultSet rs = getEmptyResultSet(); |
ResultSet rs = getEmptyResultSet(); |
2611 |
throws IOException, LscpException, LSException { |
throws IOException, LscpException, LSException { |
2612 |
|
|
2613 |
verifyConnection(); |
verifyConnection(); |
2614 |
|
name = toEscapedString(name); |
2615 |
out.writeLine("SET MIDI_INSTRUMENT_MAP NAME " + + mapId + " '" + name + "'"); |
out.writeLine("SET MIDI_INSTRUMENT_MAP NAME " + + mapId + " '" + name + "'"); |
2616 |
if(getPrintOnlyMode()) return; |
if(getPrintOnlyMode()) return; |
2617 |
|
|
2667 |
if(!info.getLoadMode().name().equals("DEFAULT")) { |
if(!info.getLoadMode().name().equals("DEFAULT")) { |
2668 |
cmd.append(' ').append(info.getLoadMode().name()); |
cmd.append(' ').append(info.getLoadMode().name()); |
2669 |
} |
} |
2670 |
if(info.getName() != null) cmd.append(" '").append(info.getName()).append("'"); |
|
2671 |
|
if(info.getName() != null) { |
2672 |
|
String s = toEscapedString(info.getName()); |
2673 |
|
cmd.append(" '").append(s).append("'"); |
2674 |
|
} |
2675 |
|
|
2676 |
out.writeLine(cmd.toString()); |
out.writeLine(cmd.toString()); |
2677 |
if(getPrintOnlyMode()) return; |
if(getPrintOnlyMode()) return; |
2867 |
loadInstrument(String filename, int instrIdx, int samplerChn, boolean nonModal) |
loadInstrument(String filename, int instrIdx, int samplerChn, boolean nonModal) |
2868 |
throws IOException, LscpException, LSException { |
throws IOException, LscpException, LSException { |
2869 |
|
|
|
filename = getEscapedString(filename); |
|
2870 |
String cmd = nonModal ? "LOAD INSTRUMENT NON_MODAL " : "LOAD INSTRUMENT "; |
String cmd = nonModal ? "LOAD INSTRUMENT NON_MODAL " : "LOAD INSTRUMENT "; |
2871 |
String args = '\'' + filename + "' " + instrIdx + ' ' + samplerChn; |
String args = '\'' + filename + "' " + instrIdx + ' ' + samplerChn; |
2872 |
|
|
3520 |
|
|
3521 |
verifyConnection(); |
verifyConnection(); |
3522 |
String s = String.valueOf(channel) + " " + String.valueOf(midiCtrl); |
String s = String.valueOf(channel) + " " + String.valueOf(midiCtrl); |
3523 |
if(name != null) s += " '" + name + "'"; |
if(name != null) s += " '" + toEscapedString(name) + "'"; |
3524 |
out.writeLine("CREATE FX_SEND " + s); |
out.writeLine("CREATE FX_SEND " + s); |
3525 |
if(getPrintOnlyMode()) return -1; |
if(getPrintOnlyMode()) return -1; |
3526 |
|
|
3651 |
throws IOException, LscpException, LSException { |
throws IOException, LscpException, LSException { |
3652 |
|
|
3653 |
verifyConnection(); |
verifyConnection(); |
3654 |
String args = " " + channel + " " + fxSend + " '" + name + "'"; |
String args = " " + channel + " " + fxSend + " '" + toEscapedString(name) + "'"; |
3655 |
out.writeLine("SET FX_SEND NAME" + args); |
out.writeLine("SET FX_SEND NAME" + args); |
3656 |
if(getPrintOnlyMode()) return; |
if(getPrintOnlyMode()) return; |
3657 |
|
|
3739 |
ResultSet rs = getEmptyResultSet(); |
ResultSet rs = getEmptyResultSet(); |
3740 |
} |
} |
3741 |
|
|
3742 |
|
/** |
3743 |
|
* Starts an instrument editor for editing the loaded instrument |
3744 |
|
* on the specified sampler channel. |
3745 |
|
* @param samplerChn The sampler channel number. |
3746 |
|
* @throws IOException If some I/O error occurs. |
3747 |
|
* @throws LscpException If LSCP protocol corruption occurs. |
3748 |
|
* @throws LSException If <code>samplerChn</code> is not a valid channel number or if |
3749 |
|
* there is no instrument loaded on the specified sampler channel. |
3750 |
|
* @see #getSamplerChannels |
3751 |
|
*/ |
3752 |
|
public synchronized void |
3753 |
|
editInstrument(int samplerChn) throws IOException, LscpException, LSException { |
3754 |
|
verifyConnection(); |
3755 |
|
out.writeLine("EDIT INSTRUMENT " + samplerChn); |
3756 |
|
if(getPrintOnlyMode()) return; |
3757 |
|
|
3758 |
|
ResultSet rs = getEmptyResultSet(); |
3759 |
|
} |
3760 |
|
|
3761 |
|
|
3762 |
|
|
3763 |
/** |
/** |
3764 |
* Adds the specified directory to the instruments database. |
* Adds the specified directory to the instruments database. |
3765 |
* @param dir The absolute path name of the directory to add. |
* @param dir The absolute (escaped) path name of the directory to add. |
3766 |
* @throws IOException If some I/O error occurs. |
* @throws IOException If some I/O error occurs. |
3767 |
* @throws LSException If the creation of the directory failed. |
* @throws LSException If the creation of the directory failed. |
3768 |
* @throws LscpException If LSCP protocol corruption occurs. |
* @throws LscpException If LSCP protocol corruption occurs. |
3778 |
|
|
3779 |
/** |
/** |
3780 |
* Removes the specified directory from the instruments database. |
* Removes the specified directory from the instruments database. |
3781 |
* @param dir The absolute path name of the directory to remove. |
* @param dir The absolute (escaped) path name of the directory to remove. |
3782 |
* @throws IOException If some I/O error occurs. |
* @throws IOException If some I/O error occurs. |
3783 |
* @throws LscpException If LSCP protocol corruption occurs. |
* @throws LscpException If LSCP protocol corruption occurs. |
3784 |
* @throws LSException If the specified directory is not |
* @throws LSException If the specified directory is not |
3813 |
|
|
3814 |
/** |
/** |
3815 |
* Removes the specified directories from the instruments database. |
* Removes the specified directories from the instruments database. |
3816 |
* @param dirs The absolute path names of the directories to remove. |
* @param dirs The absolute (escaped) path names of the directories to remove. |
3817 |
* @param force If <code>true</code> forces the removal of non-empty |
* @param force If <code>true</code> forces the removal of non-empty |
3818 |
* directories. |
* directories. |
3819 |
* @throws IOException If some I/O error occurs. |
* @throws IOException If some I/O error occurs. |
3888 |
out.writeLine("LIST DB_INSTRUMENT_DIRECTORIES '" + dir + "'"); |
out.writeLine("LIST DB_INSTRUMENT_DIRECTORIES '" + dir + "'"); |
3889 |
if(getPrintOnlyMode()) return null; |
if(getPrintOnlyMode()) return null; |
3890 |
|
|
3891 |
return parseStringList(getSingleLineResultSet().getResult()); |
String[] names = parseEscapedStringList(getSingleLineResultSet().getResult()); |
3892 |
|
for(int i = 0; i < names.length; i++) { |
3893 |
|
names[i] = toNonEscapedString(names[i]); |
3894 |
|
} |
3895 |
|
return names; |
3896 |
} |
} |
3897 |
|
|
3898 |
/** |
/** |
3914 |
DbDirectoryInfo info = new DbDirectoryInfo(rs.getMultiLineResult()); |
DbDirectoryInfo info = new DbDirectoryInfo(rs.getMultiLineResult()); |
3915 |
if(dir.equals("/")) { |
if(dir.equals("/")) { |
3916 |
info.setName("/"); |
info.setName("/"); |
3917 |
} else if(dir.length() > 1 && dir.charAt(dir.length() - 1) == '/') { |
} else { |
3918 |
dir = dir.substring(0, dir.length() - 1); |
dir = removeEndingFileSeparator(dir); |
|
} |
|
|
int i = dir.lastIndexOf('/'); |
|
|
if(i != -1 && i < dir.length() - 1) { |
|
|
info.setName(dir.substring(i + 1)); |
|
|
if(i == 0) info.setParentDirectoryPath("/"); |
|
|
else info.setParentDirectoryPath(dir.substring(0, i)); |
|
3919 |
} |
} |
3920 |
|
String s = getFileName(dir); |
3921 |
|
if(s != null) info.setName(toNonEscapedFileName(s)); |
3922 |
|
s = getParentDirectory(dir); |
3923 |
|
if(s != null) info.setParentDirectoryPath(s); |
3924 |
|
|
3925 |
return info; |
return info; |
3926 |
} |
} |
3937 |
public synchronized DbDirectoryInfo[] |
public synchronized DbDirectoryInfo[] |
3938 |
getDbDirectories(String dir) throws IOException, LscpException, LSException { |
getDbDirectories(String dir) throws IOException, LscpException, LSException { |
3939 |
String[] dirS = getDbDirectoryNames(dir); |
String[] dirS = getDbDirectoryNames(dir); |
3940 |
if(dir.charAt(dir.length() - 1) != '/') dir += "/"; |
if(!hasEndingFileSeparator(dir)) dir += "/"; |
3941 |
DbDirectoryInfo[] infoS = new DbDirectoryInfo[dirS.length]; |
DbDirectoryInfo[] infoS = new DbDirectoryInfo[dirS.length]; |
3942 |
for(int i = 0; i < dirS.length; i++) infoS[i] = getDbDirectoryInfo(dir + dirS[i]); |
for(int i = 0; i < dirS.length; i++) { |
3943 |
|
infoS[i] = getDbDirectoryInfo(dir + toEscapedFileName(dirS[i])); |
3944 |
|
} |
3945 |
return infoS; |
return infoS; |
3946 |
} |
} |
3947 |
|
|
4006 |
public synchronized void |
public synchronized void |
4007 |
renameDbDirectory(String dir, String name) throws IOException, LSException, LscpException { |
renameDbDirectory(String dir, String name) throws IOException, LSException, LscpException { |
4008 |
verifyConnection(); |
verifyConnection(); |
4009 |
|
name = toEscapedString(name); |
4010 |
out.writeLine("SET DB_INSTRUMENT_DIRECTORY NAME '" + dir + "' '" + name + "'"); |
out.writeLine("SET DB_INSTRUMENT_DIRECTORY NAME '" + dir + "' '" + name + "'"); |
4011 |
if(getPrintOnlyMode()) return; |
if(getPrintOnlyMode()) return; |
4012 |
|
|
4099 |
|
|
4100 |
verifyConnection(); |
verifyConnection(); |
4101 |
String s = "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '"; |
String s = "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '"; |
4102 |
out.writeLine(s + dir + "' '" + desc + "'"); |
out.writeLine(s + dir + "' '" + toEscapedString(desc) + "'"); |
4103 |
if(getPrintOnlyMode()) return; |
if(getPrintOnlyMode()) return; |
4104 |
|
|
4105 |
ResultSet rs = getEmptyResultSet(); |
ResultSet rs = getEmptyResultSet(); |
4278 |
break; |
break; |
4279 |
} |
} |
4280 |
|
|
4281 |
sb.append(" '").append(dbDir).append("' '").append(fsDir).append("'"); |
sb.append(" '").append(dbDir).append("' '"); |
4282 |
|
sb.append(fsDir).append("'"); |
4283 |
out.writeLine(sb.toString()); |
out.writeLine(sb.toString()); |
4284 |
if(getPrintOnlyMode()) return -1; |
if(getPrintOnlyMode()) return -1; |
4285 |
|
|
4375 |
out.writeLine("LIST DB_INSTRUMENTS '" + dir + "'"); |
out.writeLine("LIST DB_INSTRUMENTS '" + dir + "'"); |
4376 |
if(getPrintOnlyMode()) return null; |
if(getPrintOnlyMode()) return null; |
4377 |
|
|
4378 |
return parseStringList(getSingleLineResultSet().getResult()); |
String[] names = parseEscapedStringList(getSingleLineResultSet().getResult()); |
4379 |
|
for(int i = 0; i < names.length; i++) { |
4380 |
|
names[i] = toNonEscapedString(names[i]); |
4381 |
|
} |
4382 |
|
return names; |
4383 |
} |
} |
4384 |
|
|
4385 |
/** |
/** |
4399 |
|
|
4400 |
ResultSet rs = getMultiLineResultSet(); |
ResultSet rs = getMultiLineResultSet(); |
4401 |
DbInstrumentInfo info = new DbInstrumentInfo(rs.getMultiLineResult()); |
DbInstrumentInfo info = new DbInstrumentInfo(rs.getMultiLineResult()); |
4402 |
int i = instr.lastIndexOf('/'); |
String s = getParentDirectory(instr); |
4403 |
if(i != -1 && i < instr.length() - 1) { |
if(s != null) info.setDirectoryPath(s); |
4404 |
info.setName(instr.substring(i + 1)); |
s = getFileName(instr); |
4405 |
if(i == 0) info.setDirectoryPath("/"); |
if(s != null) info.setName(toNonEscapedFileName(s)); |
|
else info.setDirectoryPath(instr.substring(0, i)); |
|
|
} |
|
4406 |
|
|
4407 |
return info; |
return info; |
4408 |
} |
} |
4419 |
public synchronized DbInstrumentInfo[] |
public synchronized DbInstrumentInfo[] |
4420 |
getDbInstruments(String dir) throws IOException, LscpException, LSException { |
getDbInstruments(String dir) throws IOException, LscpException, LSException { |
4421 |
String[] instrS = getDbInstrumentNames(dir); |
String[] instrS = getDbInstrumentNames(dir); |
4422 |
if(dir.charAt(dir.length() - 1) != '/') dir += "/"; |
if(!hasEndingFileSeparator(dir)) dir += "/"; |
4423 |
|
|
4424 |
DbInstrumentInfo[] infoS = new DbInstrumentInfo[instrS.length]; |
DbInstrumentInfo[] infoS = new DbInstrumentInfo[instrS.length]; |
4425 |
for(int i = 0; i < instrS.length; i++) { |
for(int i = 0; i < instrS.length; i++) { |
4426 |
infoS[i] = getDbInstrumentInfo(dir + instrS[i]); |
infoS[i] = getDbInstrumentInfo(dir + toEscapedFileName(instrS[i])); |
4427 |
} |
} |
4428 |
return infoS; |
return infoS; |
4429 |
} |
} |
4491 |
throws IOException, LSException, LscpException { |
throws IOException, LSException, LscpException { |
4492 |
|
|
4493 |
verifyConnection(); |
verifyConnection(); |
4494 |
|
name = toEscapedString(name); |
4495 |
out.writeLine("SET DB_INSTRUMENT NAME '" + instr + "' '" + name + "'"); |
out.writeLine("SET DB_INSTRUMENT NAME '" + instr + "' '" + name + "'"); |
4496 |
if(getPrintOnlyMode()) return; |
if(getPrintOnlyMode()) return; |
4497 |
|
|
4583 |
throws IOException, LSException, LscpException { |
throws IOException, LSException, LscpException { |
4584 |
|
|
4585 |
verifyConnection(); |
verifyConnection(); |
4586 |
|
desc = toEscapedString(desc); |
4587 |
out.writeLine("SET DB_INSTRUMENT DESCRIPTION '" + instr + "' '" + desc + "'"); |
out.writeLine("SET DB_INSTRUMENT DESCRIPTION '" + instr + "' '" + desc + "'"); |
4588 |
if(getPrintOnlyMode()) return; |
if(getPrintOnlyMode()) return; |
4589 |
|
|
4631 |
sb.append(" '").append(dir).append("'"); |
sb.append(" '").append(dir).append("'"); |
4632 |
|
|
4633 |
if(query.name != null && query.name.length() > 0) { |
if(query.name != null && query.name.length() > 0) { |
4634 |
sb.append(" NAME='").append(query.name).append("'"); |
sb.append(" NAME='").append(toEscapedString(query.name)).append("'"); |
4635 |
} |
} |
4636 |
|
|
4637 |
String s = query.getCreatedAfter(); |
String s = query.getCreatedAfter(); |
4655 |
} |
} |
4656 |
|
|
4657 |
if(query.description != null && query.description.length() > 0) { |
if(query.description != null && query.description.length() > 0) { |
4658 |
sb.append(" DESCRIPTION='").append(query.description).append("'"); |
sb.append(" DESCRIPTION='"); |
4659 |
|
sb.append(toEscapedString(query.description)).append("'"); |
4660 |
} |
} |
4661 |
|
|
4662 |
out.writeLine(sb.toString()); |
out.writeLine(sb.toString()); |
4663 |
if(getPrintOnlyMode()) return null; |
if(getPrintOnlyMode()) return null; |
4664 |
|
|
4665 |
String[] dirS = parseStringList(getSingleLineResultSet().getResult()); |
String[] dirS = parseEscapedStringList(getSingleLineResultSet().getResult()); |
4666 |
|
|
4667 |
DbDirectoryInfo[] infoS = new DbDirectoryInfo[dirS.length]; |
DbDirectoryInfo[] infoS = new DbDirectoryInfo[dirS.length]; |
4668 |
for(int i = 0; i < dirS.length; i++) { |
for(int i = 0; i < dirS.length; i++) { |
4712 |
sb.append(" '").append(dir).append("'"); |
sb.append(" '").append(dir).append("'"); |
4713 |
|
|
4714 |
if(query.name != null && query.name.length() > 0) { |
if(query.name != null && query.name.length() > 0) { |
4715 |
sb.append(" NAME='").append(query.name).append("'"); |
sb.append(" NAME='").append(toEscapedString(query.name)).append("'"); |
4716 |
} |
} |
4717 |
|
|
4718 |
if(query.formatFamilies.size() > 0) { |
if(query.formatFamilies.size() > 0) { |
4752 |
} |
} |
4753 |
|
|
4754 |
if(query.description != null && query.description.length() > 0) { |
if(query.description != null && query.description.length() > 0) { |
4755 |
sb.append(" DESCRIPTION='").append(query.description).append("'"); |
sb.append(" DESCRIPTION='"); |
4756 |
|
sb.append(toEscapedString(query.description)).append("'"); |
4757 |
} |
} |
4758 |
|
|
4759 |
if(query.instrumentType != DbSearchQuery.InstrumentType.BOTH) { |
if(query.instrumentType != DbSearchQuery.InstrumentType.BOTH) { |
4766 |
} |
} |
4767 |
|
|
4768 |
if(query.product != null && query.product.length() > 0) { |
if(query.product != null && query.product.length() > 0) { |
4769 |
sb.append(" PRODUCT='").append(query.product).append("'"); |
sb.append(" PRODUCT='").append(toEscapedString(query.product)).append("'"); |
4770 |
} |
} |
4771 |
|
|
4772 |
if(query.artists != null && query.artists.length() > 0) { |
if(query.artists != null && query.artists.length() > 0) { |
4773 |
sb.append(" ARTISTS='").append(query.artists).append("'"); |
sb.append(" ARTISTS='").append(toEscapedString(query.artists)).append("'"); |
4774 |
} |
} |
4775 |
|
|
4776 |
if(query.keywords != null && query.keywords.length() > 0) { |
if(query.keywords != null && query.keywords.length() > 0) { |
4777 |
sb.append(" KEYWORDS='").append(query.keywords).append("'"); |
sb.append(" KEYWORDS='"); |
4778 |
|
sb.append(toEscapedString(query.keywords)).append("'"); |
4779 |
} |
} |
4780 |
|
|
4781 |
out.writeLine(sb.toString()); |
out.writeLine(sb.toString()); |
4782 |
if(getPrintOnlyMode()) return null; |
if(getPrintOnlyMode()) return null; |
4783 |
|
|
4784 |
String[] instrS = parseStringList(getSingleLineResultSet().getResult()); |
String[] instrS = parseEscapedStringList(getSingleLineResultSet().getResult()); |
4785 |
|
|
4786 |
DbInstrumentInfo[] infoS = new DbInstrumentInfo[instrS.length]; |
DbInstrumentInfo[] infoS = new DbInstrumentInfo[instrS.length]; |
4787 |
for(int i = 0; i < instrS.length; i++) { |
for(int i = 0; i < instrS.length; i++) { |
4812 |
} |
} |
4813 |
|
|
4814 |
/** |
/** |
4815 |
|
* Removes all instruments and directories and re-creates |
4816 |
|
* the instruments database structure. |
4817 |
|
* @throws IOException If some I/O error occurs. |
4818 |
|
* @throws LscpException If LSCP protocol corruption occurs. |
4819 |
|
* @throws LSException If the formatting of the instruments database failed. |
4820 |
|
*/ |
4821 |
|
public synchronized void |
4822 |
|
formatInstrumentsDb() throws IOException, LscpException, LSException { |
4823 |
|
verifyConnection(); |
4824 |
|
out.writeLine("FORMAT INSTRUMENTS_DB"); |
4825 |
|
if(getPrintOnlyMode()) return; |
4826 |
|
|
4827 |
|
ResultSet rs = getEmptyResultSet(); |
4828 |
|
} |
4829 |
|
|
4830 |
|
/** |
4831 |
* Resets the specified sampler channel. |
* Resets the specified sampler channel. |
4832 |
* |
* |
4833 |
* @param samplerChn The sampler channel number. |
* @param samplerChn The sampler channel number. |