WISE v5.0 Release Notes

Hiroki Terashima edited this page Mar 12, 2016 · 51 revisions

Table of Contents

Release Schedule

Stable: Mar 11, 2016 Announcement

RC2: Feb 23, 2016 Announcement

RC1: Feb 12, 2016 Announcement

Download

You can download WISE 5.0 at http://wise5.org

Notes

WISE5 Goals Read WISE5's goals.

WISE5 Design Doc and Notes Read this to get an overview of what's new in WISE5.

List of Issues for v5.0 List of issues for WISE5.

This release requires Tomcat 8.0.x and and java 7+ to work with WebSockets. WISE@Berkeley is using Tomcat 8.0.28 with java 1.7.0_95 (as of Feb. 2016)

Major additions/changes

  1. Client-side VLE re-written using AngularJS and ES6.
  2. New visual design for the VLE
  3. A New Project Structure to support adaptive navigation like branching, hinging, constraints.
  4. New "Component" project data type. WISE4 "Step" => WISE5 "Component". WISE5 "Step" is a collection of one or more "Components". You can read more on components here.
  5. Event Logging support.
  6. Auto-save for all components.
  7. Responsive Design to work on different screen sizes.
  8. Simpler development process using npm.
  9. Performance improvements in client and server-side codebases.
  10. Unit Tests and End-to-End tests.

Minor additions/changes

  1. Merge student data size limitation levels into one
  2. PreviewProject now uses the lang=XX option in the URL param
  3. More translations into Hebrew, and Traditional Chinese
  4. Upgraded SpringFramework dependency 4.1.4 => 4.2.0
  5. Upgraded SpringSecurity dependency 4.0.1 => 4.0.2
  6. Refactoring and code cleanup
  7. Removed *.html from URL paths
    1. /previewprojectlist.html => /projectlibrary
      /teacher/index.html => /teacher
      /student/index.html => /student
      /signup.html => /join
      /student/registerstudent.html => /student/join
      /teacher/registerteacher.html => /teacher/join
      /student/startproject.html => /student/startproject
      /vleconfig.html => /vleconfig
      etc...
  8. Bug fixes

Updating instructions (for people upgrading from v4.10)

1. Add new key/value pairs to wise.properties (see wise_sample.properties for example)

student_max_work_size=512000
defaultLocale=en
google_analytics_id=
userAgentParseKey=
You can then remove "student_max_work_size_default", "student_max_work_size_large", and "nodes_with_large_student_work" keys.

2. Run queries to update database

DROP TABLE `stepwork_cache`;

ALTER TABLE  `projects` ADD COLUMN `wiseVersion` INT(2) NULL DEFAULT NULL AFTER `run_fk`;

ALTER TABLE  `annotation` ADD COLUMN `nodeId` VARCHAR(45) NULL DEFAULT NULL AFTER `toUser_id`;

# drop duplicateId column from stepwork table. https://github.com/WISE-Community/WISE/issues/528
ALTER TABLE  `stepwork` DROP column duplicateId;

# make stepwork table's postTime, node_id, userInfo_id, and data fields not nullable. separated into multiple queries since each query takes a long time to run
ALTER TABLE `stepwork` CHANGE COLUMN `userInfo_id` `userInfo_id` BIGINT(20) NOT NULL;
ALTER TABLE `stepwork` CHANGE COLUMN `node_id` `node_id` BIGINT(20) NOT NULL;
ALTER TABLE `stepwork` CHANGE COLUMN `postTime` `postTime` DATETIME NOT NULL;
ALTER TABLE `stepwork` CHANGE COLUMN `data` `data` MEDIUMTEXT NOT NULL;


# change postLevel to non-null column and any existing null fields to 5 (max postlevel)
UPDATE `runs` set  `postLevel` = 5 where  `postLevel` is null;
ALTER TABLE `runs` CHANGE COLUMN `postLevel` `postLevel` INT(11) NOT NULL ;

# add StudentWork table and set indices
    create table studentWork (
        id integer not null auto_increment,
        clientSaveTime datetime not null,
        componentId varchar(30),
        componentType varchar(30),
        isAutoSave bit not null,
        isSubmit bit not null,
        nodeId varchar(30) not null,
        serverSaveTime datetime not null,
        studentData mediumtext not null,
        periodId bigint not null,
        runId bigint not null,
        workgroupId bigint not null,
        primary key (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    alter table studentWork 
        add constraint FK_mimnejycw7u1bgltxkf3wbxwh 
        foreign key (periodId) 
        references groups (id);

    alter table studentWork 
        add constraint FK_1bx4p6cs0itbhbugx9a1ov8fq 
        foreign key (runId) 
        references runs (id);

    alter table studentWork 
        add constraint FK_4hqdejeubrrob2lvlgkqgw63k 
        foreign key (workgroupId) 
        references wiseworkgroups (id);

    create index runIdIndex on studentWork (runId);

    create index workgroupIdIndex on studentWork (workgroupId);

# add events table and set indices

     create table events (
        id integer not null auto_increment,
        category varchar(255) not null,
        clientSaveTime datetime not null,
        componentId varchar(30),
        componentType varchar(30),
        context varchar(30) not null,
        data text not null,
        event varchar(255) not null,
        nodeId varchar(30),
        serverSaveTime datetime not null,
        periodId bigint not null,
        runId bigint not null,
        workgroupId bigint not null,
        primary key (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    alter table events 
        add constraint FK_hvs65ix9oss3abisglg7r502r 
        foreign key (periodId) 
        references groups (id);

    alter table events 
        add constraint FK_18ony502dcyxdrgjriir0u8bm 
        foreign key (runId) 
        references runs (id);

    alter table events 
        add constraint FK_jh9ptmwgfdnyq9flj9mly66qd 
        foreign key (workgroupId) 
        references wiseworkgroups (id);

    create index runIdIndex on events (runId);

    create index workgroupIdIndex on events (workgroupId);

# add Annotations table and set indices
    create table annotations (
        id integer not null auto_increment,
        clientSaveTime datetime not null,
        componentId varchar(30),
        data text not null,
        nodeId varchar(30),
        serverSaveTime datetime not null,
        type varchar(30) not null,
        studentWorkId integer,
        fromWorkgroupId bigint,
        periodId bigint not null,
        runId bigint not null,
        toWorkgroupId bigint not null,
        primary key (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    create index runIdIndex on annotations (runId);

    create index toWorkgroupIdIndex on annotations (toWorkgroupId);

    alter table annotations 
        add constraint FK_1d5pxm1esuhp2itfr2xx6cha9 
        foreign key (studentWorkId) 
        references studentWork (id);

    alter table annotations 
        add constraint FK_3uwsbpxbqpqynfwt7oym6p59g 
        foreign key (fromWorkgroupId) 
        references wiseworkgroups (id);

    alter table annotations 
        add constraint FK_k3bkb9frmuj637vfehvmnrdqo 
        foreign key (periodId) 
        references groups (id);

    alter table annotations 
        add constraint FK_qoauslcyxtauxtlgeipbsxj1n 
        foreign key (runId) 
        references runs (id);

    alter table annotations 
        add constraint FK_ss22rostrwvgvh4x7n5mmq173 
        foreign key (toWorkgroupId) 
        references wiseworkgroups (id);

# add studentAssets table and set indices

    create table studentAssets (
        id integer not null auto_increment,
        clientDeleteTime datetime,
        clientSaveTime datetime not null,
        componentId varchar(30),
        componentType varchar(30),
        filePath varchar(255) not null,
        fileSize bigint not null,
        fileName varchar(255) not null,
        isReferenced bit not null,
        nodeId varchar(30),
        serverDeleteTime datetime,
        serverSaveTime datetime not null,
        periodId bigint not null,
        runId bigint not null,
        workgroupId bigint not null,
        primary key (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    create index runIdIndex on studentAssets (runId);

    create index workgroupIdIndex on studentAssets (workgroupId);

    alter table studentAssets 
        add constraint FK_i27j9qbi42yndvm9u2fqu7x9o 
        foreign key (periodId) 
        references groups (id);

    alter table studentAssets 
        add constraint FK_g3yxcw4g5gt6t2febfuoeyu6q 
        foreign key (runId) 
        references runs (id);

    alter table studentAssets 
        add constraint FK_1op2r8en8svkyyh8k0o00sb9n 
        foreign key (workgroupId) 
        references wiseworkgroups (id);


# add NotebookItems table and set indices
    create table notebookItems (
        id integer not null auto_increment,
        clientDeleteTime datetime,
        clientSaveTime datetime not null,
        componentId varchar(30),
        content text,
        nodeId varchar(30),
        serverDeleteTime datetime,
        serverSaveTime datetime not null,
        title varchar(255),
        type varchar(30),
        periodId bigint not null,
        runId bigint not null,
        studentAssetId integer,
        studentWorkId integer,
        workgroupId bigint not null,
        primary key (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


    create index runIdIndex on notebookItems (runId);

    create index workgroupIdIndex on notebookItems (workgroupId);


    alter table notebookItems 
        add constraint FK_ise5npapdk8l8oboed1cwdpvy 
        foreign key (periodId) 
        references groups (id);

    alter table notebookItems 
        add constraint FK_ovww8da6he3tajdqcv5kjnkyc 
        foreign key (runId) 
        references runs (id);

    alter table notebookItems 
        add constraint FK_qhj21osipe081frv53u06gsf7 
        foreign key (studentAssetId) 
        references studentAssets (id);

    alter table notebookItems 
        add constraint FK_o7cl4ipb1r8i5golyna3hd3iq 
        foreign key (studentWorkId) 
        references studentWork (id);

    alter table notebookItems 
        add constraint FK_1kysecht20yj67y65kh1n1agw 
        foreign key (workgroupId) 
        references wiseworkgroups (id);



# Merge urlmodules table into modules table PART 1/3
# commit: https://github.com/WISE-Community/WISE/commit/2b8c6d0548476093c940eb23d806031ad7a3ca64
alter table modules add column moduleUrl varchar(255) not null;

# Merge urlmodules table into modules table PART 2/3
UPDATE modules
   JOIN urlmodules
   ON modules.id = urlmodules.id
   SET modules.moduleUrl = urlmodules.module_url;

# Merge urlmodules table into modules table PART 3/3
drop table urlmodules;


# change Run.owners => Run.owner PART 1/4
# add runs.owner_fk column
alter table `runs` add column `owner_fk` bigint(20) not null;

# change Run.owners => Run.owner PART 2/4
# copy run owner data from runs_related_to_owners.owner_fk to run.owner_fk column
UPDATE runs
   JOIN runs_related_to_owners
   ON runs.id = runs_related_to_owners.runs_fk
   SET runs.owner_fk = runs_related_to_owners.owners_fk;

# change Run.owners => Run.owner PART 3/4
# add foreign key to run.owner_fk
alter table runs 
    add constraint FK_rtby4u6ckas8uabbsphui5c3g 
    foreign key (owner_fk) 
    references users (id);

# change Run.owners => Run.owner PART 4/4
# delete runs_related_to_owners table
drop table runs_related_to_owners;


# change Project.owners => Project.owner PART 1/4
# add projects.owner_fk column
alter table projects add column `owner_fk` bigint(20) not null;

# change Project.owners => Project.owner PART 2/4
# copy project owner data from projects_related_to_owners.owner_fk to project.owner_fk column
UPDATE projects
       JOIN projects_related_to_owners
       ON projects.id = projects_related_to_owners.projects_fk
       SET projects.owner_fk = projects_related_to_owners.owners_fk;

# change Project.owners => Project.owner PART 3/4 
# add foreign key to project.owner_fk
alter table projects 
    add constraint FK_lglinci94nt1chg4acxpds1nh 
    foreign key (owner_fk) 
    references users (id);

# change Project.owners => Project.owner PART 4/4
# delete projects_related_to_owners table
drop table projects_related_to_owners;


# Drop modules_related_to_owners table
drop table modules_related_to_owners;


# Drop projects.run_fk column. Will need to drop the foreign key constraint first.
show create table projects;

alter table projects drop foreign key FOREIGN_KEY_ID;
(replace FOREIGN_KEY_ID with id of the constraint, like FKC479187ABD6D05A5, which you can find in the output of the "show create table projects" above.)

alter table projects drop column run_fk;

# change Tag.id type from Long to Integer
alter table tags change column id id integer not null auto_increment;
alter table projects_related_to_tags change column tag_fk tag_fk integer not null;

# change NewsItem.id type from Long to Integer
alter table newsitem change column id id integer not null auto_increment;

# change portal.id from bigint to tinyint
alter table portal change column id id tinyint not null auto_increment;

# change announcement.id from bigint to medium int. You might need to disable constraints to make this work.
alter table runs_related_to_announcements change column announcements_fk announcements_fk mediumint not null;
alter table announcements change column id id mediumint not null auto_increment;

# change portal_statistics.id from bigint to unsigned smallint
alter table portal_statistics change column id id smallint unsigned not null auto_increment;

# change student_attendance.id from bigint to unsigned int
alter table student_attendance change column id id int unsigned not null auto_increment;