From 9f5b5febeae4f393e8372c5504a3107233508810 Mon Sep 17 00:00:00 2001 From: inga-lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Sat, 19 Jun 2010 19:09:20 +0000 Subject: [PATCH] ImportConsole now uses NConsoler (third-party) to parse command-line args; some bugfixes in userlist and pageouter --- Builder/IISMainHandler/build.txt | 2 +- Builder/IISMainHandler/product.wxs | 14 +++- IISMainHandler/PageOuter.cs | 10 ++- IISMainHandler/handlers/BoardHandler.cs | 2 +- IISMainHandler/handlers/ThreadHandler.cs | 3 +- .../handlers/response/BoardAsThread.cs | 2 +- .../handlers/response/UserListHandler.cs | 2 +- ImportConsole/ImportConsole.csproj | 4 + ImportConsole/Program.cs | 70 +++++++++++------- ThirdParty/NConsoler/NConsoler.dll | Bin 0 -> 32768 bytes templates/Full/UserList.xslt | 2 +- 11 files changed, 71 insertions(+), 40 deletions(-) create mode 100644 ThirdParty/NConsoler/NConsoler.dll diff --git a/Builder/IISMainHandler/build.txt b/Builder/IISMainHandler/build.txt index 8a32cf7..a9d8b73 100644 --- a/Builder/IISMainHandler/build.txt +++ b/Builder/IISMainHandler/build.txt @@ -1 +1 @@ -250 \ No newline at end of file +257 \ No newline at end of file diff --git a/Builder/IISMainHandler/product.wxs b/Builder/IISMainHandler/product.wxs index eb4d903..f7cfb3d 100644 --- a/Builder/IISMainHandler/product.wxs +++ b/Builder/IISMainHandler/product.wxs @@ -61,6 +61,9 @@ + + + + + diff --git a/IISMainHandler/PageOuter.cs b/IISMainHandler/PageOuter.cs index 8bc2f17..bc79f76 100644 --- a/IISMainHandler/PageOuter.cs +++ b/IISMainHandler/PageOuter.cs @@ -41,13 +41,17 @@ namespace FLocal.IISHandler { } } - public static PageOuter createFromGet(string[] requestParts, long perPage, Dictionary> customAction) { + /*public static PageOuter createFromGet(string[] requestParts, long perPage, Dictionary> customAction) { return createFromGet(requestParts, perPage, customAction, 2); + }*/ + + public static PageOuter createFromGet(string[] requestParts, long perPage, int offset) { + return createFromGet(requestParts, perPage, new Dictionary>(), offset); } - public static PageOuter createFromGet(string[] requestParts, long perPage) { + /*public static PageOuter createFromGet(string[] requestParts, long perPage) { return createFromGet(requestParts, perPage, new Dictionary>()); - } + }*/ public XElement exportToXml(int left, int current, int right) { XElement result = new XElement("pageOuter", diff --git a/IISMainHandler/handlers/BoardHandler.cs b/IISMainHandler/handlers/BoardHandler.cs index 6805743..0946b2b 100644 --- a/IISMainHandler/handlers/BoardHandler.cs +++ b/IISMainHandler/handlers/BoardHandler.cs @@ -20,7 +20,7 @@ namespace FLocal.IISHandler.handlers { override protected XElement[] getSpecificData(WebContext context) { Board board = Board.LoadById(int.Parse(context.requestParts[1])); - PageOuter pageOuter = PageOuter.createFromGet(context.requestParts, context.userSettings.threadsPerPage); + PageOuter pageOuter = PageOuter.createFromGet(context.requestParts, context.userSettings.threadsPerPage, 2); IEnumerable threads = board.getThreads(pageOuter, context); return new XElement[] { new XElement("currentLocation", board.exportToXmlSimpleWithParent(context)), diff --git a/IISMainHandler/handlers/ThreadHandler.cs b/IISMainHandler/handlers/ThreadHandler.cs index 9c256de..adbecd5 100644 --- a/IISMainHandler/handlers/ThreadHandler.cs +++ b/IISMainHandler/handlers/ThreadHandler.cs @@ -48,7 +48,8 @@ namespace FLocal.IISHandler.handlers { new JoinSpec[0] ) } - } + }, + 2 ); IEnumerable posts = thread.getPosts(pageOuter, context); thread.incrementViewsCounter(); diff --git a/IISMainHandler/handlers/response/BoardAsThread.cs b/IISMainHandler/handlers/response/BoardAsThread.cs index c7fb52b..fe29cf4 100644 --- a/IISMainHandler/handlers/response/BoardAsThread.cs +++ b/IISMainHandler/handlers/response/BoardAsThread.cs @@ -20,7 +20,7 @@ namespace FLocal.IISHandler.handlers.response { override protected XElement[] getSpecificData(WebContext context) { Board board = Board.LoadById(int.Parse(context.requestParts[1])); - PageOuter pageOuter = PageOuter.createFromGet(context.requestParts, context.userSettings.postsPerPage); + PageOuter pageOuter = PageOuter.createFromGet(context.requestParts, context.userSettings.postsPerPage, 2); IEnumerable threads = board.getThreads( pageOuter, context, new SortSpec[] { diff --git a/IISMainHandler/handlers/response/UserListHandler.cs b/IISMainHandler/handlers/response/UserListHandler.cs index c4419b4..0e75003 100644 --- a/IISMainHandler/handlers/response/UserListHandler.cs +++ b/IISMainHandler/handlers/response/UserListHandler.cs @@ -19,7 +19,7 @@ namespace FLocal.IISHandler.handlers.response { } override protected XElement[] getSpecificData(WebContext context) { - PageOuter pageOuter = PageOuter.createFromGet(context.requestParts, context.userSettings.usersPerPage); + PageOuter pageOuter = PageOuter.createFromGet(context.requestParts, context.userSettings.usersPerPage, 1); IEnumerable users = User.getUsers(pageOuter, context); return new XElement[] { new XElement("users", diff --git a/ImportConsole/ImportConsole.csproj b/ImportConsole/ImportConsole.csproj index fe7ef5d..10fee14 100644 --- a/ImportConsole/ImportConsole.csproj +++ b/ImportConsole/ImportConsole.csproj @@ -31,6 +31,10 @@ 4 + + False + ..\ThirdParty\NConsoler\NConsoler.dll + diff --git a/ImportConsole/Program.cs b/ImportConsole/Program.cs index 2c299e8..e86c10d 100644 --- a/ImportConsole/Program.cs +++ b/ImportConsole/Program.cs @@ -7,10 +7,11 @@ using FLocal.Common.actions; using FLocal.Common.dataobjects; using FLocal.Core; using System.Configuration; +using NConsoler; namespace FLocal.ImportConsole { class Program { - static void Main(string[] args) { + public static void Main(string[] args) { if(!FLocal.Common.Config.isInitialized) { lock(typeof(FLocal.Common.Config)) { @@ -18,39 +19,54 @@ namespace FLocal.ImportConsole { FLocal.Common.Config.Init(ConfigurationManager.AppSettings); } } + Consolery.Run(typeof(Program), args); } + } + + [Action] + public static void ImportUsers() { for(int i=1; i<800; i++) { Console.Write("[" + i + "]"); foreach(string userName in ShallerGateway.getUserNames(i)) { - Console.Write("."); - Dictionary userData = ShallerGateway.getUserInfo(userName); - AbstractChange addUser = new InsertChange( - User.TableSpec.instance, - new Dictionary() { - { User.TableSpec.FIELD_NAME, new ScalarFieldValue(userName) }, - { User.TableSpec.FIELD_REGDATE, new ScalarFieldValue(DateTime.Parse(userData["regDate"]).ToUTCString()) }, - { User.TableSpec.FIELD_LOCATION, new ScalarFieldValue(userData["location"]) }, - { User.TableSpec.FIELD_SHOWPOSTSTOUSERS, new ScalarFieldValue("All") }, - { User.TableSpec.FIELD_SIGNATURE, new ScalarFieldValue(userData["signature"]) }, - { User.TableSpec.FIELD_TITLE, new ScalarFieldValue(userData["title"]) }, - { User.TableSpec.FIELD_TOTALPOSTS, new ScalarFieldValue("0") }, - { User.TableSpec.FIELD_USERGROUPID, new ScalarFieldValue("1") }, - { User.TableSpec.FIELD_BIOGRAPHY, new ScalarFieldValue(userData["biography"]) }, - } - ); - AbstractChange addAccount = new InsertChange( - Account.TableSpec.instance, - new Dictionary() { - { Account.TableSpec.FIELD_NAME, new ScalarFieldValue(userName.ToLower()) }, - { Account.TableSpec.FIELD_NEEDSMIGRATION, new ScalarFieldValue("1") }, - { Account.TableSpec.FIELD_PASSWORDHASH, new ScalarFieldValue("*") }, - { Account.TableSpec.FIELD_USERID, new ReferenceFieldValue(addUser) }, - } - ); - ChangeSetUtil.ApplyChanges(addUser, addAccount); + try { + User.LoadByName(userName); + Console.Write("-"); + } catch(NotFoundInDBException) { + Dictionary userData = ShallerGateway.getUserInfo(userName); + AbstractChange addUser = new InsertChange( + User.TableSpec.instance, + new Dictionary() { + { User.TableSpec.FIELD_NAME, new ScalarFieldValue(userName) }, + { User.TableSpec.FIELD_REGDATE, new ScalarFieldValue(DateTime.Parse(userData["regDate"]).ToUTCString()) }, + { User.TableSpec.FIELD_LOCATION, new ScalarFieldValue(userData["location"]) }, + { User.TableSpec.FIELD_SHOWPOSTSTOUSERS, new ScalarFieldValue("All") }, + { User.TableSpec.FIELD_SIGNATURE, new ScalarFieldValue(userData["signature"]) }, + { User.TableSpec.FIELD_TITLE, new ScalarFieldValue(userData["title"]) }, + { User.TableSpec.FIELD_TOTALPOSTS, new ScalarFieldValue("0") }, + { User.TableSpec.FIELD_USERGROUPID, new ScalarFieldValue("1") }, + { User.TableSpec.FIELD_BIOGRAPHY, new ScalarFieldValue(userData["biography"]) }, + } + ); + AbstractChange addAccount = new InsertChange( + Account.TableSpec.instance, + new Dictionary() { + { Account.TableSpec.FIELD_NAME, new ScalarFieldValue(userName.ToLower()) }, + { Account.TableSpec.FIELD_NEEDSMIGRATION, new ScalarFieldValue("1") }, + { Account.TableSpec.FIELD_PASSWORDHASH, new ScalarFieldValue("*") }, + { Account.TableSpec.FIELD_USERID, new ReferenceFieldValue(addUser) }, + } + ); + ChangeSetUtil.ApplyChanges(addUser, addAccount); + Console.Write("."); + } } } } + + [Action] + public static void ProcessUpload(string pathToUpload) { + throw new NotImplementedException(); + } } } diff --git a/ThirdParty/NConsoler/NConsoler.dll b/ThirdParty/NConsoler/NConsoler.dll new file mode 100644 index 0000000000000000000000000000000000000000..d2c2b3dc92a7108d73d400a6ca4bef077889065a GIT binary patch literal 32768 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 Vrh%FUY8t3%pr(PE2L6Nw{x1znF^&KL literal 0 HcmV?d00001 diff --git a/templates/Full/UserList.xslt b/templates/Full/UserList.xslt index 1e456d6..f79d06c 100644 --- a/templates/Full/UserList.xslt +++ b/templates/Full/UserList.xslt @@ -51,7 +51,7 @@ страницы: - /UserList// + /Users/