Skip to content

Commit 6d8cc75

Browse files
committed
Edit Scheduling Subpart: Subpart Credit
- Max Units made editable when editing Variable Min/Max credit without the need to change the credit type first (when editing existing credit information) - fixed an issue when no units or max units are provided (for a type that requires units/max units) or when the provided units are not a number
1 parent d8d8a58 commit 6d8cc75

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

JavaSource/org/unitime/timetable/action/SchedulingSubpartEditAction.java

+28-6
Original file line numberDiff line numberDiff line change
@@ -340,10 +340,10 @@ private void doLoad(SchedulingSubpart ss, String subpartId ) {
340340
form.setCreditType(credit.getCreditType().getUniqueId());
341341
form.setCreditUnitType(credit.getCreditUnitType().getUniqueId());
342342
if (credit instanceof FixedCreditUnitConfig){
343-
form.setUnits(((FixedCreditUnitConfig) credit).getFixedUnits());
343+
form.setUnits(float2string(((FixedCreditUnitConfig) credit).getFixedUnits()));
344344
} else if (credit instanceof VariableFixedCreditUnitConfig){
345-
form.setUnits(((VariableFixedCreditUnitConfig) credit).getMinUnits());
346-
form.setMaxUnits(((VariableFixedCreditUnitConfig) credit).getMaxUnits());
345+
form.setUnits(float2string(((VariableFixedCreditUnitConfig) credit).getMinUnits()));
346+
form.setMaxUnits(float2string(((VariableFixedCreditUnitConfig) credit).getMaxUnits()));
347347
if (credit instanceof VariableRangeCreditUnitConfig){
348348
form.setFractionalIncrementsAllowed(((VariableRangeCreditUnitConfig) credit).isFractionalIncrementsAllowed());
349349
}
@@ -444,18 +444,27 @@ private void doUpdate(SchedulingSubpart ss, SchedulingSubpartDAO sdao, boolean t
444444
CourseCreditUnitConfig origConfig = ss.getCredit();
445445
ss.setCredit(null);
446446
sdao.getSession().remove(origConfig);
447-
ss.setCredit(CourseCreditUnitConfig.createCreditUnitConfigOfFormat(form.getCreditFormat(), form.getCreditType(), form.getCreditUnitType(), form.getUnits(), form.getMaxUnits(), form.getFractionalIncrementsAllowed(), Boolean.valueOf(false)));
447+
ss.setCredit(CourseCreditUnitConfig.createCreditUnitConfigOfFormat(
448+
form.getCreditFormat(), form.getCreditType(), form.getCreditUnitType(),
449+
string2float(form.getUnits()), string2float(form.getMaxUnits()),
450+
form.getFractionalIncrementsAllowed(), Boolean.valueOf(false)));
448451
ss.getCredit().setOwner(ss);
449452
}
450453
} else {
451454
CourseCreditUnitConfig origConfig = ss.getCredit();
452455
ss.setCredit(null);
453456
sdao.getSession().remove(origConfig);
454-
ss.setCredit(CourseCreditUnitConfig.createCreditUnitConfigOfFormat(form.getCreditFormat(), form.getCreditType(), form.getCreditUnitType(), form.getUnits(), form.getMaxUnits(), form.getFractionalIncrementsAllowed(), Boolean.valueOf(false)));
457+
ss.setCredit(CourseCreditUnitConfig.createCreditUnitConfigOfFormat(
458+
form.getCreditFormat(), form.getCreditType(), form.getCreditUnitType(),
459+
string2float(form.getUnits()), string2float(form.getMaxUnits()),
460+
form.getFractionalIncrementsAllowed(), Boolean.valueOf(false)));
455461
ss.getCredit().setOwner(ss);
456462
}
457463
} else {
458-
ss.setCredit(CourseCreditUnitConfig.createCreditUnitConfigOfFormat(form.getCreditFormat(), form.getCreditType(), form.getCreditUnitType(), form.getUnits(), form.getMaxUnits(), form.getFractionalIncrementsAllowed(), Boolean.valueOf(false)));
464+
ss.setCredit(CourseCreditUnitConfig.createCreditUnitConfigOfFormat(
465+
form.getCreditFormat(), form.getCreditType(), form.getCreditUnitType(),
466+
string2float(form.getUnits()), string2float(form.getMaxUnits()),
467+
form.getFractionalIncrementsAllowed(), Boolean.valueOf(false)));
459468
ss.getCredit().setOwner(ss);
460469
}
461470
}
@@ -485,6 +494,19 @@ private void doUpdate(SchedulingSubpart ss, SchedulingSubpartDAO sdao, boolean t
485494
sdao.getSession().flush();
486495
}
487496

497+
protected static Float string2float(String value) {
498+
try {
499+
return Float.valueOf(value);
500+
} catch (Exception e) {
501+
return 0f;
502+
}
503+
}
504+
505+
protected static String float2string(Float value) {
506+
if (value == null) return "";
507+
return value.toString();
508+
}
509+
488510
protected void setupChildren(SchedulingSubpart ss) {
489511
DatePattern selectedDatePattern = (form.getDatePattern() < 0 ? (ss.canInheritParentPreferences() ? ss.getParentSubpart().effectiveDatePattern() : ss.getSession().getDefaultDatePatternNotNull()) : DatePatternDAO.getInstance().get(form.getDatePattern()));
490512
try {

WebContent/help/Release-Notes.xml

+7
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@
4444
</line>
4545
</description>
4646
</item>
47+
<item>
48+
<name>Edit Scheduling Subpart: Subpart Credit</name>
49+
<description>
50+
<line>Max Units made editable when editing Variable Min/Max credit without the need to change the credit type first (when editing existing credit information).</line>
51+
<line>Fixed an issue when no units or max units are provided (for a type that requires units/max units) or when the provided units are not a number.</line>
52+
</description>
53+
</item>
4754
<item>
4855
<name>Course Timetabling Solver: Optimization</name>
4956
<description>

WebContent/user/schedulingSubpartEdit.jsp

+1-1
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@
209209
<td nowrap><loc:message name="propertyMaxUnits"/></td>
210210
<td>
211211
<s:textfield name="form.maxUnits" maxlength="4" size="4"
212-
disabled="%{form.creditFormat != 'variableRange'}"/>
212+
disabled="%{form.creditFormat != 'variableRange' && form.creditFormat != 'variableMinMax'}"/>
213213
</td>
214214
</tr>
215215
<tr>

0 commit comments

Comments
 (0)